CSVを解析しようとしていますが、いずれかの列で基準が満たされている場合は、これを新しいcsvに書き出します。
例えば
次のようなcsvがある場合
123 Some Street
Flat 1, 21 Other road
House, Someother street
各行を分析する必要があるので、2番目ではなく最初の列に番号が表示されている場合は、その番号を抽出する必要があります。両方の列に番号がある場合は、両方を抽出する必要があります。番号がない場合は、最初の列のテキストを抽出します。次に、2つの元の列と3つの新しい列番号1、番号2、テキストを使用して新しいcsvを記述します。つまり、フラット番号、家番号、家名。したがって、新しいCSVは次のようになります
123 Some Street, , 123,
Flat 1, 21 Other road, 1, 21,
House, Someother street, , , House.
どんなガイダンスも非常に役に立ちます。
ありがとう
編集済み
import csv
csvFile = 'myData.csv'
csvOut = 'myOut.csv'
reader = csv.reader(csvFile)
writer = csv.writer(csvOut)
for row in reader:
num = \d | \d\d | \d\d\d
if row [0] || row [1] == num
if row [1] == num
writer.row [3]
else row [0] == num
writer.row [2]
writer.row [3]
else writer.row [0] [2]
csvOut.close()
再編集
これがより明確な説明になることを願っています:
行[0]、[1]に元のデータが含まれる新しいCSVを出力し、行に番号が1つしかない場合、つまり行[3]に書き込まれる家の番号がある場合は行に2つの数値(行[0]と行[1])がある場合は、それぞれ行[2]と[3]に書き込む必要があります。数値がない場合は、行[0]の文字列を行[に書き込みます。 4]。最終的には、フラット番号、家番号、家名を3つの異なる列に分ける必要があります。
さらなる編集
私はコードに取り組んでいますが、今は次のようになっています。近づいているように感じますが、まだ道のりは遠いですか?
import csv
import re
csvFile = open(myData.csv, 'rb')
csvOut = open(myOut.csv, 'wb')
reader = csv.reader(csvFile)
writer = csv.writer(csvOut)
for row in reader:
a = row [0] re.compile('\d' | '\d\d' | '\d\d\d')
a1 = row [0] re.compile('\d' | '\d\d' | '\d\d\d')
b = row [1]
b1 = row [1] re.compile('\d' | '\d\d' | '\d\d\d')
if b = re.compile('\d' | '\d\d' | '\d\d\d')
writer.writerow(a,b,a1,b1, )
elif a = re.compile('\d' | '\d\d' | '\d\d\d')
witer.writerow(a,b, , b1, )
else
writer.writerow(a,b, , ,a)
csvOut.close()
ありがとう