如何在python中逐字符遍历unicode泰米尔单词字符?
我想知道一个Unicode字符串(泰米尔语)中有多少个字符,然后检查字符1和字符2是否出现特定情况。如何在python中逐字符遍历unicode泰米尔单词字符?,python,regex,python-2.7,tamil,Python,Regex,Python 2.7,Tamil,我想知道一个Unicode字符串(泰米尔语)中有多少个字符,然后检查字符1和字符2是否出现特定情况。 我能够将单词拆分为字符,但我不知道如何使用单词长度逐个字符地遍历它们 示例:单词:எஃகு". 它应该不会返回3个字符,并且我应该能够将单词[0]打印为'எ', 单词[1]as'ஃ' 而单词[2]是'கு'. 我想检查一下: if word[0] is a vowel: if word[1] is "ஃ": then print word[0]+wo
我能够将单词拆分为字符,但我不知道如何使用单词长度逐个字符地遍历它们
示例:单词:எஃகு".
它应该不会返回3个字符,并且我应该能够将单词[0]打印为'எ', 单词[1]as'ஃ' 而单词[2]是'கு'.
我想检查一下:
if word[0] is a vowel:
if word[1] is "ஃ":
then print word[0]+word[1]+word[3] (as எஃகு)
else:
print word[0]
我想使用no.of.char进行遍历,如果no.of.char是3,那么I=0应该可以帮助我处理எ'. 我看到了许多与Unicode字符处理和长度处理相关的问题。但它们要么返回字节长度,要么给出不同的结果。所以我感到困惑 我用于按字符拆分它们的代码:
for line in f.readlines():
letters = utf8.get_letters(line)
for letter in letters:
ff.write(unicode(letter))
ff.write(' ')
示例输入文件:
அன்றுஅதாவது
அஃதான்று 示例输出文件: அ ன் று
அ தா வ து
அ ஃ தா ன் று 包装
pip install Open-Tamil
代码
你的字符串是
unicode
对象还是str
对象?你能举一个例子,说明你有哪些代码可以创建/操作这样的字符串吗?听起来像是广告,因为值得注意的是”எஃகு
中有四个Unicode代码点,而不是三个。您可以使用list()எஃகு”
(如果您使用的是Python 3),您将得到['எ', 'ஃ', 'க', 'ு']
@BrenBarn我已经给出了示例输入文件。我对泰米尔语一无所知,但是…不会l=Tamil.utf8.get_letters(str)
返回一个字母列表?您可以使用l[0]
,l[1]
,l[2]
?字符数len(l)
?这是一个很好的示例代码。我建议对源字符串使用一个不同于str
的名称,以避免通过testring类名称隐藏内置名。@Blckknght:这一点很好。我不是Pythonista,str
-as类型完全没有进入我的脑海。你的代码和我的代码之间的区别在于我正在读取文件,因此无法在字符串前面加上“u”。我想这就是它为我返回4的原因。我如何从文件中读取并在字符串前面加上“u”“。您的代码确实返回3。感谢您的帮助。这完全是另一个主题,与泰米尔语无关,但与编码以及str
和unicode
类型之间的差异有关。请阅读。简短回答-使用line.decode('utf-8'))
而不是line
。忽略这一点-您已经有了unicode
字符串,因为否则utf.get\u letters
根本不起作用。因此,您这边还有其他问题。此外,如果for循环给您3个结果,那么len()
就不可能给您4个结果。
from tamil import utf8
string = u"எஃகு"
letters = utf8.get_letters(string)
print(len(letters))
# 3. Not 4.
print(letters)
# [u'\u0b8e', u'\u0b83', u'\u0b95\u0bc1']
for letter in letters:
print(letter)
# எ
# ஃ
# கு