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