1

如此简单的动作,但我无法让它工作!!!..

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

4 回答 4

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

或者:

>>> with open('hello.txt') as f:
...     ''.join(f.read().split())
... 
'1244X2222555141234X2332X2354235X235235X23552335523'
>>> 
于 2013-07-24T08:35:39.557 回答
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
于 2013-07-24T08:33:20.003 回答
0

你可能想要类似的东西

with open("file") as in_file:
    data = in_file.read().strip().replace("\n", "")
于 2013-07-24T08:35:20.623 回答
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 '))
于 2013-07-24T10:42:06.907 回答