假设我有两个csv文件:
csvfile1
:
name Dept City
sree, CSE, Bengaluru,
vatsasa, ECE, Hyd,
IT, VJA,
capini, Mech, TPTY,
DTP, Civil,kandra
Bengaluru,ECM, TVM,
sre, ECS, MNGL,
vatsas, Kochi,
Nano, TVM,
capmin, Tech,
DTP9, CSS, Kochi,
ESS, TVM,
sree0, RSS, MNGL,
csvfile2
:
name, Dept, City, Address
我想检查csvfile2
中存在的csvfile1
的所有列。你知道吗
如果存在,请检查csvfile1
中的任何一列是否包含空格。如果存在空格,则用值NULL
替换空格,并按列将所有列写入新的csv文件csvfile3
。
如果不存在,则将缺少的列与现有列一起写入csvfile3
。此外,那些缺少的列的值应在csvfile3
中显示为NULL
,并且现有列下的空格应替换为NULL
预期输出如下:
name Dept City Address
sree, CSE, Bengaluru,NULL
vatsasa, ECE, Hyd, NULL
NULL, IT, VJA, NULL
capini, NULL, Mech, NULL
DTP, Civil,NULL, NULL
Bengaluru,ECM, TVM, NULL
sre, ECS, MNGL, NULL
vatsas, NULL, Kochi, NULL
NULL, Nano, TVM, NULL
capmin, NULL, Tech, NULL
DTP9, CSS, Kochi, NULL
NULL, ESS, TVM, NULL
sree0, RSS, MNGL, NULL
我编写了以下代码:
f=open('csvfile2.csv', 'r')
g=csv.reader(f)
first=next(g, None)
print('lenght of first list', len(first))
f1=open('csvfile1.csv','r')
h=csv.reader(f1)
second=next(h,None)
print('lenght of first list', len(second))
f2=open('csvfile3', 'w')
writer=csv.writer(f2)
count=0
if len(second) < len(first):
for i in first:
if not i in second:
for count in range:
writer.writerows('Null')
print('null')
else:
ind=second.index(i)
for j in second:
if not j[ind]:
writer.writerows(j[ind].replace(' ','Null'))
else:
writer.writerows(j[ind])
以上代码输出:
name, Dept, City, Address
N
U
L
L
N
U
L
L
N
U
L
L
N
U
L
L
N
U
L
L
我已经在awsec2实例上编写了代码,并计划在awslambda上也使用同样的代码。你知道吗
直接操作csv文件可能非常困难。我建议使用pandas来处理表格式的数据结构,因为它非常高效,并且最小化了代码。你知道吗
示例代码:
样本输出:
如果您不想使用
pandas
,这里有一个使用csv
的解决方案:如上所述,这假设
csvfile1
的格式实际上是:相关问题 更多 >
编程相关推荐