我正在尝试解析一个CSV,如果在任何一列中都满足条件,请将其写入一个新的CSV。在
例如
如果我有一个csv
123 Some Street
Flat 1, 21 Other road
House, Someother street
我需要分析每一行,所以如果一个数字出现在第一列,而不是第二列,那么我需要提取这个数字,如果两列都有一个数字,那么我需要同时提取两个数字,如果没有数字,那么我需要提取第一列中的文本。 然后写一个新的csv,其中有2个原始列和3个新列1,2,text。即公寓号,门牌号,门牌号。 所以新的CSV看起来像
^{pr2}$任何指导都会很有帮助。在
谢谢
已编辑
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]行的门牌号,如果一行(第[0]行和第[1]行)中有2个数字,则它们应分别写入第[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()
谢谢
这可能会给你一个线索,因为我不完全确定你需要什么。在
$cat t1
示例
^{pr2}$输出
下面的代码可以满足您的需要。对于输出,只需索引元组并写出所需的组件。每个结果有6个元素
结果
^{pr2}$相关问题 更多 >
编程相关推荐