Python条带。不能剥离换行但使用f.read()

时间:2013-07-24 08:32:16

标签: python newline whitespace strip

这样一个简单的动作,但我可以让这个工作!!! ..

如果我有一个包含文本的行数的文件,我想删除所有换行符和空格,并从文件内容中获得一个连续的字符串。我写了一个非常简单的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() ..

显然我做的事情很愚蠢,但有人可以指出问题吗?

4 个答案:

答案 0 :(得分:1)

>>> with open('hello.txt') as f:
...     f.read().replace(' ', '').replace('\n', '')
... 
'1244X2222555141234X2332X2354235X235235X23552335523'
>>> 

或者:

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

答案 1 :(得分: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

答案 2 :(得分:0)

你可能想要像

这样的东西
with open("file") as in_file:
    data = in_file.read().strip().replace("\n", "")

答案 3 :(得分: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 '))