我想在文本文件中的某些藏文字符前後添加一些空格,併成功地將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
期望的輸出是什麼? –