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

跟風遠走 提交于 2019-12-02 09:47:12

Consider this:

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))

The i + n is needed, because the index where you want to insert your space shifts with every space inserted

Here is another solution using generator expressions.

If you are happy to provide the list of indices after each space rather than before, this will do the job:

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

which gives '123 45 6 78 91 011 12 131 4'.

Otherwise you would need to first add one to each index:

idx = [2, 6, 11, 21]
idx = [i+1 for i in idx]
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!