我想在文本文件中的某些藏文字符前后添加一些空格,并成功地将re.sub()用于多行代替所有普通字符文件。如果我为一个藏文字符的re.sub替换行做同样的事情,它也可以工作,不管哪个字符(所有的unicode序列都是正确的)。但是,如果我为藏文字符尝试多行re.sub(),它会找到所有正确的字符串,但会用错误的字符串(第一行的字符串)替换它。这是我的代码的相关部分(我使用Python 2.7):在Python 2.7中使用unicode的re.sub 2.7
import codecs, re, os
text = codecs.open('test.txt', encoding='utf-8')
def cs(text):
for line in text:
#line = re.sub('<utt>','',line)
#line = re.sub('//','/',line)
line = re.sub(ur'[\u0f62\u0f0b]/ES', ur' \u0f62\u0f0b ',line)
line = re.sub(ur'[\u0f60\u0f72\u0f0b]/ES', ur' \u0f60\u0f72\u0f0b ',line)
print line
两个单独使用Unicode工作线,并给予正确的更换(虽然性格在输出翻倍,而不是代替)。结合起来,他们发现了不同的角色,但总是用第一个''u0f62 \ u0f0b'代替它,而不是它应该是。任何建议非常感谢!
这是输出的一个示例中,我得到(只专注于藏线):
པརར་སཱིའིར་འདུལ་// Xབ་/ Eག་/ Sབཞུགས་/ Sསོ/S་./S
这是从输入的测试文件的第一行:
པར་/ ESསཱིའི་/ ESའདུལ་// Xབ་/ Eག་/ Sབཞུགས་/ Sསོ/S་./S
它与正确的第一个词,但错误的机智h代表分别代表unicode re.sub的第一行和第二行的第二行。所期望的输出与周围的前两个单词的最后一个字符的空间下面,因为他们有一个/ ES标记:
པར་སཱིའི་འདུལ་// Xབ་/ Eག་/ Sབཞུགས་/Sསོ/ S་./S
我不认为这是没有一些示例输入和预期输出应答。我的猜测是那些方括号并不是你想要的,但我无法知道你想要什么。 – jasonharper
谢谢,我现在添加了输入和输出。是的,我认为这是方括号,但我已经尝试了所有可能的替代位置,但这并没有帮助。 – lothelanor
期望的输出是什么? –