我如何摆脱双倍空格? (蟒蛇)

时间:2018-12-06 10:04:45

标签: python integer whitespace

我有一个数据文件(.txt),其中包含一些行,每一行如下:

0 45 1 31 2 54 3 54 4 64

零前有一个空格,两个整数之间有两个空格,末尾有一个空格。我想要的是这样的:

0 45 1 31 2 54 3 54 4 64

我正在尝试一切(使用Python),但是我没有成功!

当然,最后我想将其修改为:

45 31 54 54 64

这也消除了数字0到4。但是,如果我到达第一个步骤,则最后一步可能会更容易。

例如,我已经尝试过:

with open('myfile', rt') as openfile, open('myfile_2, 'a') as csvfile:
    for line in openfile:
            A = str(line).replace('  ', ' ')
            Writer = csv.writer(csvfile, delimiter=' ', quotechar=' ')
            Writer.writerow([A])

但是在“ myfile_2”中,该字符串未得到纠正。

3 个答案:

答案 0 :(得分:0)

做出相应更改:

with open('newtes.txt', 'w') as outfile, open('tes.txt', 'r') as infile:
    for line in infile:
        outfile.write(line.replace('  ',' ').strip())

编辑1:按注释中的建议添加strip()
编辑2:进行更改。

答案 1 :(得分:0)

您可以改用re

import re
# Handles multiple whitespaces
WHITE_SPACE_PATTERN = re.compile(r' +')
# or
# WHITE_SPACE_PATTERN = re.compile(r'\s+')
# if you want to handle newlines as well

sample_string = "0  45  1  31  2  54  3  54  4  64"
cleaned_string = re.sub(WHITE_SPACE_PATTERN, ' ', sample_string.strip())

答案 2 :(得分:0)

您可以使用regular expression来匹配一个或多个空格(' +',其中+表示“一个或多个”)并将它们替换为一个空格:

import re
line = ''
file_object  = open("test.txt", "r+")
for line in file_object:
    line=line
print re.sub(' +', ' ',line.lstrip())