【问题标题】:python unicode string matchingpython unicode字符串匹配
【发布时间】:2016-12-01 07:07:06
【问题描述】:

我有一个单词列表转换为unciode 字符串列表,但我无法从字符串列表中匹配特定单词的结尾字符串,例如:

列表,其中包含需要删除的字符串。例如 उपलब्धियां是转换成unicode时的单词u'\u0909\u092a\u0932\u092c\u094d\u0927\u093f\u092f\u093e\u0902'

包含字符串的列表,如果在 unicode 中的单词末尾找到需要删除的字符串 r3_bad= [u"0900", u"0901", u"0902",u"0903"]; 在这种情况下,u0902 位于坏字符串列表的末尾,因此将被删除。

我试过了

if re.search(r'u$[0-3]',word[-1]) :

它不返回真 我不知道为什么。

请帮助提前谢谢。

【问题讨论】:

  • 只要打印r'u$[0-3]'word[-1]你就应该明白为什么Python在latter中找不到former了。

标签: python regex string unicode matching


【解决方案1】:

为什么选择正则表达式?我认为你需要像普通字符串比较这样的东西:

s = u'\u0909\u092a\u0932\u092c\u094d\u0927\u093f\u092f\u093e\u0902'
r3_bad= [u'\u0900',u'\u0901',u'\u0902',u'\u0903']

print s # output: उपलब्धियां
if s[-1] in r3_bad: print s[:-1] # output: उपलब्धिया

【讨论】:

  • 在我的情况下,我收到一个错误,例如:“Unicode 相等比较无法将两个参数转换为 Unicode”r3_bad 的类型是列表,而答案中的 s 类型是 unicode。请帮忙
  • 运算符 'in' 搜索任何可迭代对象,因此您可以使用另一个 unicode 字符串而不是列表,都是一样的:r3_bad = u'\u0900\u0901\u0902\u0903'
猜你喜欢
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
  • 2014-09-18
  • 2011-03-22
  • 2016-06-09
  • 1970-01-01
  • 1970-01-01
  • 2017-11-19
相关资源
最近更新 更多