在python中,在文本文件的每一行中每隔5个字符后插入一个空格

时间:2017-10-22 17:54:04

标签: python-2.7

我正在读取python(500行)中的文本文件,它看起来像是:

File Input:
0082335401
0094446049
01008544409
01037792084
01040763890

我想问一下,是否可以在每行第5个字符后插入一个空格:

Desired Output:
00823 35401
00944 46049
01008 544409
01037 792084
01040 763890

我试过下面的代码

st = " ".join(st[i:i + 5] for i in range(0, len(st), 5)) 

但执行它时返回了以下输出:

00823 35401 
0094 44604 9
010 08544 409
0 10377 92084 
0104 07638 90

我是Python的新手。任何帮助都会有所作为。

2 个答案:

答案 0 :(得分:0)

这里似乎有两个问题 - 通过运行提供的代码,您似乎将文件读入一个字符串。最好(在您的情况下)将文件作为字符串列表读取,如下所示(假设您的输入文件为input_data.txt):

# Initialize a list for the data to be stored
data = []

# Iterate through your file to read the data
with open("input_data.txt") as f:
    for line in f.readlines():
        # Use .rstrip() to get rid of the newline character at the end
        data.append(line.rstrip("\r\n"))

然后,要对列表中获得的数据进行操作,您可以使用类似于您尝试使用的列表理解。

# Assumes that data is the result from the above code
data = [i[:5] + " " + i[5:] if len(i) > 5 else i for i in data]

希望这有帮助!

答案 1 :(得分:0)

如果您唯一的要求是在第五个字符后插入一个空格,那么您可以使用以下简单版本:

#!/usr/bin/env python

with open("input_data") as data:
    for line in data.readlines():
        line = line.rstrip()
        if len(line) > 5:  
            print(line[0:5]+" "+line[5:])
        else:
            print(line)

如果你不介意,如果最后一行少于五个字符的行,你甚至可以省略if-else语句并使用if子句中的print-function:

#!/usr/bin/env python

with open("input_data") as data:
    for line in data.readlines():
        line = line.rstrip()
        print(line[0:5]+" "+line[5:])