如何使用python在字符串中查找乌尔都语单词

如何使用python在字符串中查找乌尔都语单词,python,regex,Python,Regex,我有很多包含乌尔都语和英语的文件。我必须搜索那些只有乌尔都语的单词。对于英语,我知道使用正则表达式不是问题r'[a-zA-Z]'但我如何使用乌尔都语的正则表达式 假设这是字符串 test="working جنگ test بندی کروانا not good" 请指导。使用乌尔都语,似乎这就是解决方案: 印度-阿拉伯数字代码点:U+0660-U+0669 阿拉伯文字母代码点:U+0600-U+06FF 在python3中,这非常简单: 使用以下表达式: r'[\u0600-\u06ff

我有很多包含乌尔都语和英语的文件。我必须搜索那些只有乌尔都语的单词。对于英语,我知道使用正则表达式不是问题
r'[a-zA-Z]'
但我如何使用乌尔都语的正则表达式

假设这是字符串

test="working جنگ test  بندی کروانا not good"
请指导。

使用乌尔都语,似乎这就是解决方案:

印度-阿拉伯数字代码点:
U+0660-U+0669

阿拉伯文字母代码点:
U+0600-U+06FF

在python3中,这非常简单:

使用以下表达式:

r'[\u0600-\u06ff]'
例如:

>>> test="working جنگ test  بندی کروانا not good"
>>> test
'working جنگ test  بندی کروانا not good'
>>> import re
>>> re.findall(r'[\u0600-\u06ff]',test)
['ج', 'ن', 'گ', 'ب', 'ن', 'د', 'ی', 'ک', 'ر', 'و', 'ا', 'ن', 'ا']
通过添加一个或多个
+
操作符,可以获得完整的单词

>>> re.findall(r'[\u0600-\u06ff]+',test)
['جنگ', 'بندی', 'کروانا']
python 2.7工作版的更新

在Python2.x中,unicode很难实现。您必须在正则表达式前面加上
ru
以将其标记为unicode,然后它将找到正确的标志符号。脚本中的第一行也应该是

`# -*- coding: utf-8 -*-`
test=u"working جنگ test  بندی کروانا not good"
myurdu="".join([unicode(letter) for letter in re.findall(ur'[\u0600-\u06ff]',test)])
print myurdu
>>> 
جنگبندیکروانا

有关更多信息,请参阅和。考虑切换到Python 3,因为Unicode支持在你要处理大量URURU的情况下要好得多。

< P>另一种解决问题的方式

import re    
test=u"working جنگ test  بندی کروانا not good"
token=test.split(' ')
for w in token:
  status=re.search(ur'[\u0600-\u06ff]+',w)
  if status:
      print w

它应该适用于python 2.7版

“请解决它并指导?”。你也想要咖啡吗?因为不是每个StAccess用户都知道URDU语言的字母表,你至少应该指定你想考虑的URL字的一部分字符,加上可能的重音(如果适用)。不是< > > [U0660-\06069] < /C> >已经包含在<代码> [\U0600 -\U06FF]中?我在上面翻了一下,但它只打印英文单词,没有乌尔都语?是的,我两个都试了,但它只显示英文。我的python版本是2.7.6不,先生,这很难,因为我必须更改许多其他内容also@Shafiq也将模式作为unicode传递:
ur'[\u0600-\u06ff]+'