newline - python 条带不能带换行符,但使用 f.read( )

  显示原文与译文双语对照的内容
0 0

这么简单的动作,但我把它get了。

如果有一个包含文本多行的文件,我想将所有换行和空格从文件内容中删除。 我写了一个非常简单的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(nr) 还有 rstrip()

显然我在做一些蠢事,但请大家指出问题?

时间:原作者:4个回答

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

或者:

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

rstrip或者lstrip或者条带仅删除边缘的空白。

这样做可以清理字符串中的空格。

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

你可能想要一些东西

with open("file") as in_file:
 data = in_file.read().strip().replace("n","")
原作者:
0 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 '))
原作者:
...