String 有没有办法强迫ipython解释utf-8符号?
我在用ipython笔记本 我要做的是在文本字符串中搜索任何西班牙语重音字母ñ,á,é,í,ó,ú,ñ,Á,Í,Ó,Ú,并将它们更改为英语字母表中最接近的表示形式 我决定写一个简单的函数并试一试:String 有没有办法强迫ipython解释utf-8符号?,string,utf-8,ipython,literals,diacritics,String,Utf 8,Ipython,Literals,Diacritics,我在用ipython笔记本 我要做的是在文本字符串中搜索任何西班牙语重音字母ñ,á,é,í,ó,ú,ñ,Á,Í,Ó,Ú,并将它们更改为英语字母表中最接近的表示形式 我决定写一个简单的函数并试一试: def remove_accent(n): listn = list(n) for i in range(len(listn)): if listn[i] == 'ó': listn[i] =o return listn
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更改为te重音字符的两个位置,而不是一个“\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将垂直显示列表,而不是水平显示。它完全是同一种物体,只是显示器在变化。是的,你说得对。我从来没有注意过它,我选择的弦恰好处于垂直和水平表示的边缘