I want to read .txt file and add space after a specific position/index for each line. please consider below example for more details.
suppose my file contains
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]