我想做一個替換腳本。在Python中替換序列
它應該將str1替換爲str2。 我的文件具有基於xml的結構。 例如,我有:
...word1'#13#10'word2'#13#10'word3... = ...word1'#13#10'word3...
我想刪除字符串的某些部分。 我用這個在腳本:
Lines[i] = Lines[i].replace(key, DataBase[key])
我已經檢查了「鑰匙」和「數據庫[關鍵]」正確定義。如果我用「print()」將它們打印到控制檯中 - 它看起來就像它必須。 但是,然後腳本執行它不會像這樣改變序列 - 與'#13#10'。沒有任何特定符號的密鑰對可以正常工作。 我能做什麼?爲什麼它不能很好地工作? 完整的腳本:
import configparser
#import time
config = configparser.ConfigParser() # init configparser
config.optionxform = str
config.read("SocratToCortesExpress.cfg") # config file
print("Config file - readed")
filePath = config.get("PATH", "old_file") # config file - with names of files, pairs of words
DataStrings = config.items("DATA") # read pairs
DataBase = dict() # initialization of dictionary
print("Dictionary - initialized")
for Dstr in DataStrings: # old and new words for a replacement
SocratName = Dstr[0]
CortesName = Dstr[1]
DataBase[SocratName] = CortesName
print("Dictionary - fulfilled")
with open(filePath, "r", encoding='utf-8-sig') as ResultFile: # input file Lines = ResultFile.readlines()
print("Old file - uploaded")
f1 = open('logkeys.txt', 'w')
for key in DataBase.keys():
try:
f1.write('\n'+key+'\n'+DataBase[key]+'\n')
except Exception as e: #errors
f2 = open('log.txt', 'w')
f2.write('An exceptional thing happed - %s' %e)
f2.close()
f1.close()
for i in range(len(Lines)): # brutforce - all over input file
#Lines[i] = Lines[i].replace('\ufeff', '') #some weird symbol
for key in DataBase.keys():
try:
Lines[i] = Lines[i].replace(key, DataBase[key]) #replacing
except Exception as e: #errors
f2 = open('log.txt', 'w')
f2.write('An exceptional thing happed - %s' %e)
f2.close()
print("Sequences - replaced")
outFileName = config.get("PATH", "new_file") # define output file
print("Exit file - initialized")
with open(outFileName, "a", encoding='utf-8-sig') as outFile: # save
for line in Lines:
outFile.write(line)
print("OK")
也許你沒有顯示的腳本部分有問題;由於顯而易見的原因無法確定。 –
請添加您的代碼,以便我們幫助您。 – Fejs
看看迄今爲止顯示的內容,似乎沒有錯誤。問題可能出現在你沒有顯示的部分。也許如果你發佈了更多的代碼,我們可以幫助更好。 –