我正在读取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的新手。任何帮助都会有所作为。
答案 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:])