0

私は完全な Python 初心者であることを前置きしておく必要があります。

ディレクトリとそのサブディレクトリをループしてテキスト ファイルを探すスクリプトを作成しようとしています。テキスト ファイルを検出すると、ファイルを解析して NITF XML に変換し、FTP ディレクトリにアップロードします。

この時点では、テキスト ファイルを変数に読み込んで、XML ドキュメントの適切な場所に変数を挿入できるようにする作業を続けています。テキストファイルへの例は次のとおりです。

Headline
Subhead
By A person
Paragraph text.

そして、これが私がこれまでに持っているコードです:

with open("path/to/textFile.txt") as f:
    #content = f.readlines()
    head,sub,auth = [f.readline().strip() for i in range(3)]
    data=f.read()
pth = os.getcwd()

print head,sub,auth,data,pth

私の質問は、テキスト ファイル (データ) の本文を繰り返し処理し、各行を HTML P タグで囲むにはどうすればよいですか? 例えば;

<P>line of text in file </P> <P>Next line in text file</p>.

4

7 に答える 7

3

何かのようなもの

output_format = '<p>{}</p>\n'.format
with open('input') as fin, open('output', 'w') as fout:
    fout.writelines( output_format(line.strip()) for line in fin )
于 2012-11-02T16:57:00.923 に答える
1
with open('infile') as fin, open('outfile',w) as fout:
    for line in fin:
        fout.write('<P>{0}</P>\n'.format(line[:-1])  #slice off the newline.  Same as `line.rstrip('\n')`.

#Only do this once you're sure the script works :)
shutil.move('outfile','infile')  #Need to replace the input file with the output file
于 2012-11-02T16:53:37.393 に答える
1

これは、新しいコンテンツを元のファイルに書き戻すことを前提としています。

with open('path/to/textFile.txt') as f:
    content = f.readlines()

with open('path/to/textFile.txt', 'w') as f:
    for line in content:
        f.write('<p>' + line.strip() + '</p>\n')
于 2012-11-02T16:53:41.387 に答える
0

あなたの場合、おそらく交換する必要があります

data=f.read()

と:

data = '\n'.join("<p>%s</p>" % l.strip() for l in f)
于 2012-11-02T16:55:04.537 に答える
0

を追加します

および各行の <\p>

元:

     data_new=[]
     data=f.readlines()
     for lines in data:
          data_new.append("<p>%s</p>\n" % data.strip().strip("\n"))
于 2012-11-02T20:10:39.817 に答える
0

このfileinputモジュールを使用して、必要に応じてオプションのバックアップ ファイルを作成して、1 つまたは複数のファイルをインプレースで変更できます (詳細については、そのドキュメントを参照してください)。これは、1 つのファイルを処理するために使用されています。

import fileinput

for line in fileinput.input('testinput.txt', inplace=1):
    print '<P>'+line[:-1]+'<\P>'

'testinput.txt'引数は、単一のファイル名ではなく、2 つ以上のファイル名のシーケンスにすることもできます。これは、処理するディレクトリとそのサブディレクトリ内のファイルのリストを生成するために を使用している場合に特に役立ちますos.walk()(おそらくしている)。

于 2012-11-02T21:50:02.373 に答える
0

data=f.readlines()ここを使って、

次に、データを反復処理して、次のようなことを試してください。

for line in data:
   line="<p>"+line.strip()+"</p>"
   #write line+'\n' to a file or do something else 
于 2012-11-02T17:00:09.260 に答える