首页 > 解决方案 > 如何将字符串添加到文件中的奇数行?

问题描述

我正在尝试使用一些数组创建一个文件,并且我需要在文件的所有奇数行中添加一些数据。我还需要删除一些我用 .translate() 做的字符

np.savetxt('new_arrary.txt', dsc)
mi_path = 'new_arrary.txt'
j = open(mi_path,'r')
lines = j.readlines()
j.close()
y = 0;
for i, line in enumerate(lines):
    if (i%2) != 0:
        lines[i-1] = str(kp[y])+' '+str(a[y])+' '+str(b[y])+' '+str(a[y])+' '+lines[i-1]
        y += 1
    lines[i] = lines[i].translate({ord('('): ord(' ')})
    lines[i] = lines[i].translate({ord(')'): None})
    lines[i] = lines[i].translate({ord('['): None})
    lines[i] = lines[i].translate({ord(']'): None})
    lines[i] = lines[i].translate({ord(','): None})

j = open(mi_path,'w')
for k in lines:
    j.write(k)
j.close()

有了这个我正在修改行,但它正在跳过一些行。示例:代码修改第 1 行然后第 5 行跳过第 3 行

标签: pythonpython-3.xpython-2.7

解决方案


您的代码会引发类型错误,因此我建议您这样做:

import re

with open('oddlines.txt') as fp:
    text = fp.read()

text = text.replace('(', ' ')         # use .replace(..)
text = re.sub(r'[)[\],]', '', text)   # .. and re.sub(..) to remove characters
lines = text.split('\n')

for i in range(1, len(lines), 2):         # from 1, skip every other..
    lines[i-1] = 'prefix:' + lines[i-1]   # I don't know what your kp[y] etc. are, so I'm just adding a string prefix

for line in lines:                        # then either print to screen
    print line

with open('oddlines.out', 'w') as fp:     # or to file..
    fp.write('\n'.join(lines))

与此文本oddlines.txt

first (line)
(second line)
th[i]rd line
fourth, line
fifth,line
first (line)
(second line)
th[i]rd line
fourth, line
fifth,line

上面的代码打印:

prefix:first  line
 second line
prefix:third line
fourth line
prefix:fifthline
first  line
prefix: second line
third line
prefix:fourth line
fifthline

推荐阅读