如何修复重音字符串 [python]
How to fix an accented string [python]
我正在使用网络应用程序从我玩的游戏结果中检索数据。由于我是巴西人,而且我的语言有一些带有拉丁语重音的字符,所以我检索到的大部分数据都无法使用。喜欢:
卡洛斯·洛佩兹 = Carlos Lã³Pez
我在互联网上搜索并发现 ftfy 是一个很好的修复损坏文本的工具。不管怎样,我不太了解 unicode、ascii 和其他东西,所以我使用了 ftfy,并在输出中收到了我已经遇到的相同错误。
In[15]: ftfy.fix_text('Carlos Lã³Pez')
Out[15]: 'Carlos Lã³Pez'
ftfy.fix_encoding('Carlos Lã³Pez')
Out[16]: 'Carlos Lã³Pez'
ftfy.fix_text('Carlos Lã³Pez')
Out[17]: 'Carlos Lã³Pez'
print(ftfy.fix_text('Carlos Lã³Pez'))
Carlos Lã³Pez
print(ftfy.fix_encoding('Carlos Lã³Pez'))
Carlos Lã³Pez
ftfy.explain_unicode('Carlos Lã³Pez')
U+0043 C [Lu] LATIN CAPITAL LETTER C
U+0061 a [Ll] LATIN SMALL LETTER A
U+0072 r [Ll] LATIN SMALL LETTER R
U+006C l [Ll] LATIN SMALL LETTER L
U+006F o [Ll] LATIN SMALL LETTER O
U+0073 s [Ll] LATIN SMALL LETTER S
U+0020 [Zs] SPACE
U+004C L [Lu] LATIN CAPITAL LETTER L
U+00E3 ã [Ll] LATIN SMALL LETTER A WITH TILDE
U+00B3 ³ [No] SUPERSCRIPT THREE
U+0050 P [Lu] LATIN CAPITAL LETTER P
U+0065 e [Ll] LATIN SMALL LETTER E
U+007A z [Ll] LATIN SMALL LETTER Z
ftfy.explain_unicode(unidecode('Carlos Lã³Pez'))
U+0043 C [Lu] LATIN CAPITAL LETTER C
U+0061 a [Ll] LATIN SMALL LETTER A
U+0072 r [Ll] LATIN SMALL LETTER R
U+006C l [Ll] LATIN SMALL LETTER L
U+006F o [Ll] LATIN SMALL LETTER O
U+0073 s [Ll] LATIN SMALL LETTER S
U+0020 [Zs] SPACE
U+004C L [Lu] LATIN CAPITAL LETTER L
U+0061 a [Ll] LATIN SMALL LETTER A
U+0033 3 [Nd] DIGIT THREE
U+0050 P [Lu] LATIN CAPITAL LETTER P
U+0065 e [Ll] LATIN SMALL LETTER E
U+007A z [Ll] LATIN SMALL LETTER Z
print(ftfy.fix_encoding(unidecode('Carlos Lã³Pez')))
Carlos La3Pez
print(ftfy.fix_text(unidecode('Carlos Lã³Pez')))
Carlos La3Pez
我想知道是否有任何软件包可以修复此类错误,或者您是否可以告诉我 Carlos López 变成 Carlos Lã³Pez 的原因。我很感激。
哇,太难了 :) 您的字符串编码错误 和 字符大小写也错误。
s = 'Carlos Lã³Pez'
s.upper().encode('cp1252').decode().title()
#'Carlos López'
此代码在 Python3 中有效,但在 Python2 中无效。
我正在使用网络应用程序从我玩的游戏结果中检索数据。由于我是巴西人,而且我的语言有一些带有拉丁语重音的字符,所以我检索到的大部分数据都无法使用。喜欢:
卡洛斯·洛佩兹 = Carlos Lã³Pez
我在互联网上搜索并发现 ftfy 是一个很好的修复损坏文本的工具。不管怎样,我不太了解 unicode、ascii 和其他东西,所以我使用了 ftfy,并在输出中收到了我已经遇到的相同错误。
In[15]: ftfy.fix_text('Carlos Lã³Pez')
Out[15]: 'Carlos Lã³Pez'
ftfy.fix_encoding('Carlos Lã³Pez')
Out[16]: 'Carlos Lã³Pez'
ftfy.fix_text('Carlos Lã³Pez')
Out[17]: 'Carlos Lã³Pez'
print(ftfy.fix_text('Carlos Lã³Pez'))
Carlos Lã³Pez
print(ftfy.fix_encoding('Carlos Lã³Pez'))
Carlos Lã³Pez
ftfy.explain_unicode('Carlos Lã³Pez')
U+0043 C [Lu] LATIN CAPITAL LETTER C
U+0061 a [Ll] LATIN SMALL LETTER A
U+0072 r [Ll] LATIN SMALL LETTER R
U+006C l [Ll] LATIN SMALL LETTER L
U+006F o [Ll] LATIN SMALL LETTER O
U+0073 s [Ll] LATIN SMALL LETTER S
U+0020 [Zs] SPACE
U+004C L [Lu] LATIN CAPITAL LETTER L
U+00E3 ã [Ll] LATIN SMALL LETTER A WITH TILDE
U+00B3 ³ [No] SUPERSCRIPT THREE
U+0050 P [Lu] LATIN CAPITAL LETTER P
U+0065 e [Ll] LATIN SMALL LETTER E
U+007A z [Ll] LATIN SMALL LETTER Z
ftfy.explain_unicode(unidecode('Carlos Lã³Pez'))
U+0043 C [Lu] LATIN CAPITAL LETTER C
U+0061 a [Ll] LATIN SMALL LETTER A
U+0072 r [Ll] LATIN SMALL LETTER R
U+006C l [Ll] LATIN SMALL LETTER L
U+006F o [Ll] LATIN SMALL LETTER O
U+0073 s [Ll] LATIN SMALL LETTER S
U+0020 [Zs] SPACE
U+004C L [Lu] LATIN CAPITAL LETTER L
U+0061 a [Ll] LATIN SMALL LETTER A
U+0033 3 [Nd] DIGIT THREE
U+0050 P [Lu] LATIN CAPITAL LETTER P
U+0065 e [Ll] LATIN SMALL LETTER E
U+007A z [Ll] LATIN SMALL LETTER Z
print(ftfy.fix_encoding(unidecode('Carlos Lã³Pez')))
Carlos La3Pez
print(ftfy.fix_text(unidecode('Carlos Lã³Pez')))
Carlos La3Pez
我想知道是否有任何软件包可以修复此类错误,或者您是否可以告诉我 Carlos López 变成 Carlos Lã³Pez 的原因。我很感激。
哇,太难了 :) 您的字符串编码错误 和 字符大小写也错误。
s = 'Carlos Lã³Pez'
s.upper().encode('cp1252').decode().title()
#'Carlos López'
此代码在 Python3 中有效,但在 Python2 中无效。