如何读取 .txt 文件并通过在 python 中的每一行的特定位置/索引后添加 space 来重写

How to reading .txt file and rewriting by adding space after specific position / index for each line in python

我想读取 .txt 文件并在每一行的特定 position/index 之后添加 space。请考虑以下示例以获取更多详细信息。

假设我的文件包含

12345 678 91011 12 1314

在上面的文件中,第一行在特定的 position/index [4] 之后包含 space ,然后在 position/index[8] 之后,在 position/index[14 之后] 之后 position/index[17]

预期输出: 我希望文件中的每一行在特定位置之后都有 space。即对于第一行,我想在索引 [2] 之后添加 space,然后在索引 [6] 之后添加 space,然后在索引 [11] 之后添加 space,然后添加 space 在索引 [21] 之后,依此类推...

123 45 6 78 91 011 12 131 4

提醒一下,我不想替换元素,而是在特定 position/index 之后添加一个新的 space。

正在读取 .txt 文件并在特定的 position/index 之后为 python.

中的每一行添加 space
with open("C:/path-to-file/file.txt", "r") as file:
    lines = file.read().split("\n")
    newlines = []
    for line in lines:
        line = line.rstrip()
        newline = line[:] + ' ' + line[:]   # this line is incorrect
        newlines.append(newline)
    with open("C:/path-to-file/file.txt", "w") as newfile:  
        newfile.write("\n".join(newlines)

在特定的 position/index 之后添加 space 为文本文件的每一行添加

假设我的文件包含:

12345 678 91 011 12 1314

预期输出:

123 45 6 78 91 011 12 131 4

考虑一下:

space_indecies = [2, 5, 8]

with open("C:/path-to-file/file.txt", "r") as file:
    lines = file.read().split("\n")
newlines = []
for line in lines:
    line = line.rstrip()
    for n, i in enumerate(space_indecies):
        line = line[:i + n] + ' ' + line[n + i:]
    newlines.append(line)
with open("C:/path-to-file/file.txt", "w") as newfile:  
    newfile.write("\n".join(newlines))

i + n 是必需的,因为您要插入 space 的索引会随着每个 space 插入

而变化

这是另一个使用生成器表达式的解决方案。

如果您愿意提供索引列表 after each space 而不是 before,这将工作:

line = '12345 678 91011 12 1314'
idx = [3, 7, 12, 22]
' '.join([line[i:j] for i, j in zip([None]+idx, idx+[None])])

这给出 '123 45 6 78 91 011 12 131 4'.

否则您需要先为每个索引加一个:

idx = [2, 6, 11, 21]
idx = [i+1 for i in idx]