如何将文件名中的非ASCII字符转换

7 浏览
0 Comments

如何将文件名中的非ASCII字符转换

如何将一个包含额外字符(如£ $等)的Unicode字符串转换为Python字符串?

0
0 Comments

如何将文件名中的非ASCII字符转换为ASCII字符

有一个问题是关于如何在文件名中转换非ASCII字符为ASCII字符的。下面是一些解决方法:

1. 使用unicodedata模块的normalize()函数。可以使用以下代码将非ASCII字符转换为ASCII字符:

import unicodedata
title = u"Klüft skräms inför på fédéral électoral große"
unicodedata.normalize('NFKD', title).encode('ascii', 'ignore')

2. 注意,normalize()函数不能处理Unicode标点符号(如智能引号、撇号、破折号),因为标点符号不是复合字符。可以在这里找到一个讨论和替代解决方案。

3. 不要使用以上代码,因为它会完全删除掉某些字符,比如德语中的"ß",这并不是真正的转换。可以参考其他回答中提供的正确方法。

4. 如果需要将Unicode文本写入文件,可以参考这个回答。

以上是关于如何将文件名中的非ASCII字符转换为ASCII字符的一些解决方法。可以使用unicodedata模块的normalize()函数来进行转换,但要注意它不能处理Unicode标点符号。此外,还要避免使用会完全删除某些字符的方法,而应该使用正确的方法来转换。

0
0 Comments

如何将文件名中的非ASCII字符转换为ASCII?

在处理文件名时,有时候会遇到非ASCII字符的问题。如果不需要转换非ASCII字符,可以使用encode函数将其转换为ASCII字符。

以下是一种解决方法:

>>> a=u"aaaàçççñññ"
>>> type(a)

>>> a.encode('ascii','ignore')
'aaa'
>>> a.encode('ascii','replace')
'aaa???????'
>>>

以上代码中,我们首先定义了一个包含非ASCII字符的字符串a,并使用encode函数将其转换为ASCII字符。使用'ignore'参数时,非ASCII字符将被忽略。使用'replace'参数时,非ASCII字符将被替换为问号。

另外,还可以使用'a.encode('ascii', 'xmlcharrefreplace')'将非ASCII字符转换为ASCII字符的XML字符引用形式。

or a.encode('ascii', 'xmlcharrefreplace') gives 'aaaàçççñññ'

需要注意的是,在Python 3.6.8中,字符串类型为str,没有encode方法。

总结起来,以上方法是将文件名中的非ASCII字符转换为ASCII字符的解决方案。

0
0 Comments

问题的原因是将包含非ASCII字符的字符串转换为非Unicode字符串时会出现错误。

解决方法是判断字符串是否只包含ASCII字符,如果是,则可以使用str()函数将其转换为非Unicode字符串。然而,这种方法只适用于Windows操作系统,并且在存在非ASCII符号时会出错。如果字符串的内容实际上是Unicode而不仅仅是ASCII字符,则不应该使用这种方法,否则可能会出现随机的UnicodeEncodeError异常。如果确实需要将ASCII字符的字符串转回非Unicode字符串,可以使用这种方法。

0