use*_*331 7 python string unicode
我有一个带句子的文件,其中一些是西班牙语,包含重音字母(例如é)或特殊字符(例如¿).我必须能够在句子中搜索这些字符,以便我可以确定句子是西班牙语还是英语.
我已经尽力做到这一点,但没有运气好.以下是我尝试过的解决方案之一,但显然给出了错误的答案.
sentence = ¿Qué tipo es el? #in str format, received from standard open file method
sentence = sentence.decode('latin-1')
print 'é'.decode('latin-1') in sentence
>>> False
Run Code Online (Sandbox Code Playgroud)
我也尝试使用codecs.open(..,..,'latin-1')来读取文件,但这没有帮助.然后我尝试了u'é'.encode('latin-1'),但这没效果.
我在这里有想法,有什么建议吗?
@icktoofay提供了解决方案.我最终保持文件的解码(使用latin-1),然后使用Python unicode作为字符(u'é').这要求我在脚本的顶部设置Python unicode编码.最后一步是使用该unicodedata.normalize方法对两个字符串进行规范化,然后进行相应的比较.谢谢你们的快速和大力支持.
unicodedata.normalize检查前在字符串上使用.
Unicode提供多种形式来创建一些字符.例如,á可以用单个字符,á或两个字符表示:a,然后"放在´那个顶部".规范化字符串将强制它到一个或另一个表示.(它规范化的表示取决于你传递的form参数)