0

次の形式の txt ファイルがあります。

something text1 pm,bla1,bla1
something text2 pm,bla2,bla2
something text3 am,bla3,bla3
something text4 pm,bla4,bla4

そして、私が保持したい新しいファイルで:

bla1,bla1
bla2,bla2
bla3,bla3
bla4,bla4

たとえば、すべての行の最初の10文字を保持するこれがあります。これまたは他のアイデアを変換できますか?

with open('example1.txt', 'r') as input_handle:
    with open('example2.txt', 'w') as output_handle:
        for line in input_handle:
            output_handle.write(line[:10] + '\n')
4

5 に答える 5

3

これは、csvモジュールが作成されたものです。

import csv
reader = csv.reader(open('file.csv'))

for row in reader: print(row[1])

次に、シェルを使用してファイルの出力を新しいファイルにリダイレクトするか、最後の行の代わりに次のようにすることができます。

for row in reader:
    with open('out.csv','w+') as f:
        f.write(row[1]+'\n')
于 2013-02-27T20:43:12.917 に答える
1

これが私がそれを書く方法です。

パイソン 2.7

import csv
with open('example1.txt', 'rb') as f_in, open('example2.txt', 'wb') as f_out:
    writer = csv.writer(f_out)
    for row in csv.reader(f_in):
        writer.write(row[-2:]) # keeps the last two columns

Python 3.x ( への引数の違いに注意してくださいopen)

import csv
with open('example1.txt', 'r', newline='') as f_in:
    with open('example2.txt', 'w', newline='') as f_out:
        writer = csv.writer(f_out)
        for row in csv.reader(f_in):
           writer.write(row[-2:]) # keeps the last two columns
于 2013-02-27T20:50:05.900 に答える
1

ファイルから「,」で区切られた最初の列を削除するには:

first, sep, rest = line.partition(",")
if rest: # don't write lines with less than 2 columns
   output_handle.write(rest)
于 2013-02-27T20:51:05.587 に答える
1

フォーマットが固​​定されている場合:

with open('example1.txt', 'r') as input_handle:
    with open('example2.txt', 'w') as output_handle:
        for line in input_handle:
            if line:  # and maybe some other format check
                od = line.split(',', 1)
                output_handle.write(od[1] + "\n")
于 2013-02-27T20:46:07.073 に答える
0

試す:

output_handle.write(line.split(",", 1)[1])

ドキュメントから:

str.split([9 月最大[, 分割]])

区切り文字列としてsepを使用して、文字列内の単語のリストを返します。maxsplitが指定されている場合、最大でmaxsplit個の分割が行われます (したがって、リストには最大で個のmaxsplit+1要素が含まれます)。

于 2013-02-27T20:46:03.890 に答える