python正则表达式匹配英语和telugu/devanagari单词
我需要一些帮助,从混合语言中获取单词,它包含英语和泰卢固语,这是我到目前为止的代码python正则表达式匹配英语和telugu/devanagari单词,python,regex,devanagari,Python,Regex,Devanagari,我需要一些帮助,从混合语言中获取单词,它包含英语和泰卢固语,这是我到目前为止的代码 #!/usr/bin/env python # -*- coding: utf-8 -*- import re sentence="hello world యూనియన్ యూనియన్" sentence=sentence.decode('utf-8') for m in re.finditer(ur'(\w|\’\w|\'\w)+', sentence, re.UNICODE): start
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
sentence="hello world యూనియన్ యూనియన్"
sentence=sentence.decode('utf-8')
for m in re.finditer(ur'(\w|\’\w|\'\w)+', sentence, re.UNICODE):
start, end = m.span()
word = m.group().encode('utf-8')
print start, end, word
我期待的结果是
0 5 hello
6 11 world
11 17 యూనియన్
17 23 యూనియన్
但我得到的结果是
0 5 hello
6 11 world
12 13 య
14 15 న
16 18 యన
20 21 య
22 23 న
24 26 యన
代码分割语言的每个字符,并给出独立的起始和结束长度。是否有任何方法可以将上述格式的结果作为单词而不是字符关键是
\w
与变音符号不匹配
您可以在模式中使用并包括\p{M}
,或者按照以下方式定义cmobining标记Unicode范围:
请参阅我强烈建议您避免在非UTF字符上使用正则表达式,因为它可能会严重失控。为什么不使用字符串属性和方法构建一些自定义方法呢 以下是我要做的:
sentence="hello world యూనియన్ యూనియన్"
res = sentence.split();
last_index = 0;
for word in res:
start = sentence.index(word, last_index )
end = start + len(word)
last_index = end
print(start, end, word)
您可以查看正在运行的示例。这正是我要查找的,它对我的数据非常有效,很高兴能提供帮助。只需向上投票/选择正确,也许它对其他人也有用。它在代码方面对我有很大帮助。非常感谢您的帮助。@Rohitgohtham很高兴它对您有用。请考虑通过点击来接受答案。✓ 如果我的回答对你有帮助(请参见),请点击左边(请参见)并向上投票(请参见)。
sentence="hello world యూనియన్ యూనియన్"
res = sentence.split();
last_index = 0;
for word in res:
start = sentence.index(word, last_index )
end = start + len(word)
last_index = end
print(start, end, word)