私は試したことがあります(ドキュメントを読んで4時間、グーグルグーグル...)、それは私の頭脳でなければならないので、のみ特定の列(例えば1、2、13、15及び17)をプリントアウトし、次いで、(REは^[A-Z][A-Z];.*15%;
である)特定の正規表現に一致する行を保つ :Pythonで正規表現のCSVレコードを処理する
私が処理する必要.csv
ファイルを、得ました。シェル(grep、awk)は非常に簡単で、Pythonでは(私にとっては)不可能です。
これは私がこれまでに思い付いたコードです:私の信念に
import re
import csv
src="/Users/username/file.csv"
reg="^[A-Z][A-Z];.*15%;"
with open(src, "r") as file:
for line in file:
line=line.strip()
match = re.match(reg,line.strip())
if match:
vat=csv.reader(line, delimiter=';')
for r in vat:
print r[0]
反して、csvモジュールがレコードとして、各文字ではなく、行全体を解析し、それゆえ出力はフィールドではありません[0]の配列ですが、1文字です。
試合
if match:
print line
場合、私は後に印刷行を追加した場合のラインは私の混乱したがって、正しく印刷されている - なぜcsv.readerはそのように扱っていませんか?
自分の考えを聞くことを楽しみにして - のpythonを知って、解決策は非常に簡単です;-)
PS:ボーナスポイントは、REのマッチングは、I、個々の列に行うことができます。 e。唯一のプロセスライン場合、列1つのマッチ[AZ] [AZ]無視する場合とカラム17試合15% - 次に、印刷カラム1、2、13、15および17
'csv.reader'はあなたが与えたオブジェクトを反復し、それを文字列のリストに分割します。 csv.readerにファイルの代わりに行を入力します。行(文字列)を繰り返し処理すると、文字が_records_として取得されます。ファイルを反復処理すると、行が得られます。 –