1

私はこれにかなり慣れていません。これは私が現在持っているものです:

import csv

input_file = open('linklist.csv', 'rb')
output_file = open('Link Statements9.txt', 'wb')

reader = csv.reader(input_file, delimiter=',', quoting=csv.QUOTE_NONE)
writer = csv.writer(output_file)

for row in reader:
writer.writerow(row)

これはcsvに入力された情報を取得してtxtに出力しますが、csvの特定のスペース(行3、列2など)から情報を取得し、それを文字列として保存して、他のことができるようにしたいと思います私はそれを行う方法を具体的に見つけることができません。

アイデアは、csv に次のように入力することです。

MPP01, Unit 1, Unit 2, 14336

そして、次をテキスト ドキュメントに出力します。

Establish link MPP01 at 14336 Kbps to Unit 2.
Terminate link MPP01 at 14336 Kbps from Unit 1. 

これを達成する方法についてのアイデアは大歓迎です。

4

2 に答える 2

1

まず、オブジェクトをフォーマットされた文字列に変換したい場合は、.formatメソッドを使用する必要があります。の各行readerは文字列のリストの形式を取るため、フォーマット文字列に非常に簡単に挿入できます。たとえば、説明した csv 行がある場合は、次のように使用できます。

row = ['MPP01', 'Unit 1', 'Unit 2', '14336']

formatted_row = ('Establish link {0} at {3} Kbps to {2}.\n' +
                 'Terminate link {0} at {3} Kbps to {1}.\n').format(*row)

*rowは、あたかも呼び出したかのように、変数のアンパックを表します.format(row[0], row[1], row[2], row[3])

第 2 に、csv ファイルではなくテキスト ファイルに書き込む場合は、 を使用したくありませんcsv.writerが、ファイルに直接書き込む必要があります。

with open('Link Statements9.txt', 'wb') as output_file:
    for row in reader:
        output_file.write(('Establish link {0} at {3} Kbps to {2}.\n' +
                           'Terminate link {0} at {3} Kbps to {1}.\n').format(*row)

特定の番号付きの行のみを操作したい場合は、次を使用できますenumerate

for index, row in enumerate(reader):
    # make decision based on index here

最後に、ファイルを直接開くのではなく、おそらくこのwithステートメントを使用する必要があります (簡単です)。ただし、ファイルを直接開いた場合は、完了したら閉じることを忘れないでください。

スクリプト全体:

import csv

with open('linklist.csv', 'rb') as input_file, open('Link Statements9.txt', 'wb') as output_file:
    reader = csv.reader(input_file, delimiter=',', quoting=csv.QUOTE_NONE)
    for row in reader:
        output_file.write(('Establish link {0} at {3} Kbps to {2}.\n' +
                           'Terminate link {0} at {3} Kbps to {1}.\n').format(*row))
于 2013-09-28T00:07:59.900 に答える