我正在尝试解析 CSV,如果任一列都满足条件,则将其写入新的 csv。
例如
如果我有一个看起来像的 csv
123 Some Street
Flat 1, 21 Other road
House, Someother street
我需要分析每一行,所以如果一个数字出现在第一列而不是第二列,那么我需要提取该数字,如果两列中都有一个数字,那么我需要提取两者,如果没有数字,那么我需要提取第一列中的文本。然后用 2 个原始列和 3 个新列写一个新的 csv,数字 1,数字 2,文本。即单位号码,门牌号码,房屋名称。所以新的 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()
再次编辑
我希望这可能是一个更清晰的解释:
我希望输出是一个新的 CSV,其中原始数据位于 [0]、[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()
谢谢