有没有办法强制 ipython 解释 utf-8 符号?
Is there any way to force ipython to interpret utf-8 symbols?
我正在使用 ipython 笔记本。
我想要做的是在文字字符串中搜索任何带有西班牙重音符号的字母 (ñ,á,é,í,ó,ú,Ñ,Á,É,Í,Ó,Ú) 并将它们更改为它们的最接近英文字母表。
我决定写一个简单的函数并试一试:
def remove_accent(n):
listn = list(n)
for i in range(len(listn)):
if listn[i] == 'ó':
listn[i] =o
return listn
看起来很简单,只要比较重音字符是否存在,并将其更改为最接近的表示,所以我继续测试它,得到以下输出:
in []: remove_accent('whatever !@# ó')
out[]: ['w',
'h',
'a',
't',
'e',
'v',
'e',
'r',
' ',
'!',
'@',
'#',
' ',
'\xc3',
'\xb3']
我尝试将默认编码从 ASCII(我想是因为我为重音字符设置了两个位置,而不是一个 '\xc3','\xb3'
)更改为 UTF-8,但这没有用。我想得到的是:
in []: remove_accent('whatever !@# ó')
out[]: ['w',
'h',
'a',
't',
'e',
'v',
'e',
'r',
' ',
'!',
'@',
'#',
' ',
'o']
PD:如果重音字符只产生一个位置而不是两个,这不会太糟糕我只需要更改 if 条件,但我也没有找到一种方法来做到这一点。
您的问题是“ó”字符是两个字符,而不是一个。因此,首先尝试将其更改为unicode,使每个字符的长度相同,如下所示:
def remove_accent(n):
n_unicode=unicode(n,"UTF-8")
listn = list(n_unicode)
for i in range(len(listn)):
if listn[i] == u'ó':
listn[i] = 'o'.encode('utf-8')
else:
listn[i]=listn[i].encode('utf-8')
return listn
我正在使用 ipython 笔记本。
我想要做的是在文字字符串中搜索任何带有西班牙重音符号的字母 (ñ,á,é,í,ó,ú,Ñ,Á,É,Í,Ó,Ú) 并将它们更改为它们的最接近英文字母表。
我决定写一个简单的函数并试一试:
def remove_accent(n):
listn = list(n)
for i in range(len(listn)):
if listn[i] == 'ó':
listn[i] =o
return listn
看起来很简单,只要比较重音字符是否存在,并将其更改为最接近的表示,所以我继续测试它,得到以下输出:
in []: remove_accent('whatever !@# ó')
out[]: ['w',
'h',
'a',
't',
'e',
'v',
'e',
'r',
' ',
'!',
'@',
'#',
' ',
'\xc3',
'\xb3']
我尝试将默认编码从 ASCII(我想是因为我为重音字符设置了两个位置,而不是一个 '\xc3','\xb3'
)更改为 UTF-8,但这没有用。我想得到的是:
in []: remove_accent('whatever !@# ó')
out[]: ['w',
'h',
'a',
't',
'e',
'v',
'e',
'r',
' ',
'!',
'@',
'#',
' ',
'o']
PD:如果重音字符只产生一个位置而不是两个,这不会太糟糕我只需要更改 if 条件,但我也没有找到一种方法来做到这一点。
您的问题是“ó”字符是两个字符,而不是一个。因此,首先尝试将其更改为unicode,使每个字符的长度相同,如下所示:
def remove_accent(n):
n_unicode=unicode(n,"UTF-8")
listn = list(n_unicode)
for i in range(len(listn)):
if listn[i] == u'ó':
listn[i] = 'o'.encode('utf-8')
else:
listn[i]=listn[i].encode('utf-8')
return listn