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

行ごとに読む場合、「\ n」は行の先頭にないため、「\no」を置き換えることは解決策ではありません。この場合、正規表現を使用する必要があります。

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 に答える