0

我正在阅读文本文件,它给了我类似的输出:

o hi! My name is Saurabh.

o I like python.

我必须将上述输出转换为:

*1 hi! My name is Saurabh

*2 I like python.

简单的字符串替换(用“”替换“\ no”)然后在python中添加数字给了我:

*1

o hi! My name is Saurabh

*2

o I like python.

任何人都可以帮助我获得正确的输出

*1 hi! My name is Saurabh

*2 I like python.
4

3 回答 3

1
with open('sample.txt', 'r') as fin:
    lines = fin.readlines()

    with open('sample_output.txt', 'w') as fout:
        index = 1
        for line in lines:
            if line[0] == 'o':
                line = '*' + str(index) + line[1:]
                index += 1
            fout.write(line.rstrip() + '\n')
于 2012-08-22T17:05:17.680 回答
1

如果您逐行阅读,则替换 '\no' 不是解决方案,因为 '\n' 不会位于行首。在这种情况下,您将需要使用正则表达式:

import re
f = open('test.txt')
h = open('op.txt','w')
gen = (line.strip() for line in f)

for line in enumerate(gen,1):
    h.write(re.sub('^o','*'+str(line[0]),line[1]) + '\n')
f.close()
h.close()

PS:您可能想检查该行是否包含任何内容,然后,不要做任何事情;否则写入新文件

于 2012-08-22T17:08:43.400 回答
0

这是我的解决方案:

import re

f_in=open('data_in.txt', 'r')
f_out=open('data_out.txt', 'w')
ln=1
for line in f_in:
    s = re.sub('^o+','*%-3i' % ln,line)
    f_out.write(s)
    if not line=='\n': ln += 1
f_in.close()
f_out.close()
于 2012-08-22T19:51:39.617 回答