我正在阅读文本文件,它给出了类似的输出:
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.
答案 0 :(得分: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')
答案 1 :(得分: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:您可能想检查该行是否包含任何内容,然后,不要做任何事情;否则写入新文件
答案 2 :(得分: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()