2013-07-24 50 views
1

這樣一個簡單的動作,但我canoot得到這個工作!!! ..蟒蛇地帶。不能去除換行符,但使用f.read()

如果我有一個文件,有多個行包含文本,我要刪除所有換行符和空白字符,並從文件內容中取出單個連續的字符串。我寫了一個非常簡單的python腳本來做到這一點,但它不工作,我不知道我要去哪裏錯了。 :/

文件內容是這樣的:

1244X 2222 555 
141234X 
2332X 
2354235X 
235235 X235 5233 5 523 

代碼

import sys file = sys.argv[1] 
with open(file, 'r') as infile: 
data = infile.read() 
clean_data = data.rstrip('\n') 
print clean_data 

打印出:

1244X 2222 555 
141234X 
2332X 
2354235X 
235235 X235 5233 5 523 

時,我想;

1244X2222555141234X2332X2354235X235235X23552335523 

我已經試過strip()strip(\n\r)以及rstrip() ..

很顯然,我在做一些愚蠢的事,但請能有人指出這個問題?

回答

0

rstrip或lstrip或strip僅刪除邊緣的空白。

這樣做是爲了清理字符串內部的空格。

import sys 
file = sys.argv[1] 
with open(file, 'r') as infile: 
data = infile.read() 
clean_data = ''.join(data.split()) 
print clean_data 
0

你可能要像

with open("file") as in_file: 
    data = in_file.read().strip().replace("\n", "") 
1
>>> with open('hello.txt') as f: 
...  f.read().replace(' ', '').replace('\n', '') 
... 
'1244X2222555141234X2332X2354235X235235X23552335523' 
>>> 

或者:

>>> with open('hello.txt') as f: 
...  ''.join(f.read().split()) 
... 
'1244X2222555141234X2332X2354235X235235X23552335523' 
>>> 
+0

'file.read()'會更好比'「」.join(file)'。 –

+0

哦,我不知道,謝謝。 – zhangyangyu

+0

謝謝!任何想法爲什麼我的方法不工作? – user1995839

0

你的做法甚至沒有進行最後\n字符,因爲你剝奪它和print介紹工作它再次。代碼中的這種變化會讓你更接近:

import sys 
file = sys.argv[1] 
with open(file, 'r') as infile: 
    for line in infile: 
     line = line.rstrip('\n') 
     sys.stdout.write(line) 

這是避免打印新行或空格的常規技術。在Python 3中,你也可以使用print(string, end="")。正如其他人所說,那仍不會消除這些空間。已經有很好的解決方案,但你也可以使用translate爲簡潔:

在Python 2:

fh.read().translate(None, '\n ') 

在Python 3:

fh.read().translate(str.maketrans("", "", '\n '))