2012-06-23 48 views
-1

我必須從相對較大的文本文件中刪除引號。我已經查看了可能與此相匹配的問題,但我仍然無法從文本文件中刪除特定行中的引號。刪除python中的文本文件中的引號

這是從文件中短段的樣子:

1 - "C1". 

E #1 - "C1". 

2 - "C2". 

1 

2 

E #2 - "C2". 

我想有1-"C1"。替換爲c1E #1 - "C1"替換爲E c1。我試圖在Python中替換這些,但由於雙"'s,我得到一個錯誤。

我想:

input=open('file.text', 'r') 
output=open(newfile.txt','w') 
clean==input.read().replace("1 - "C1".","c1").replace("E #1 - "C1"."," E c1") 
output.write(clean) 

我有SED:

sed 's\"//g'<'newfile.txt'>'outfile.txt'. 

但另一個語法錯誤。

+0

我第一次今天試過的東西,我從我的其他問題學會發布。 –

+0

這是input = open('file.text','r') –

+0

對不起,這個評論框正在翻閱我 –

回答

0

如果你確定要文字更換,你只需要逃避引號或者使用單引號:replace('1 - "C1".', "c1")等(並糾正了幾個語法破錯別字)。但是,這隻能在第一行工作,所以在閱讀整個文件時沒有意義。做一個聰明的工作,你可以使用re.sub

with open('file.text') as input, open('newfile.txt','w') as output: 
    for line in input: 
     line = re.sub(r'^(?P<num>\d+) - "C(?P=num)".$', 
         lambda m: 'c' + m.groups()[0], line) 
     line = re.sub(r'^E #(?P<num>\d+) - "C(?P=num)".$', 
         lambda m: 'E c' + m.groups()[0], line) 
     output.write(line) 

sed命令你似乎試圖簡單地去掉引號:

sed 's/"//g' newfile.txt > outfile.txt 
+0

謝謝......我確實使用過那樣的sed命令。 –