我有两种类型的CSV文件,我想将它们合并在一起。 要做到这一点,我想在每一行中找到某些值,如果它们在那里就删除它们。
我尝试使用 list.Index 或 list.Remove 函数,但是当值不在特定文件中时出现错误。
例如,两行是(我剪切其余行以便更好地显示):
CSV 1950 1300 1180 48 48 400 2 PASS 0 51:31.5
CSV 3270 2500 1950 1300 1180 48
我想找到值为“ 3270 ”和“ 2500 ”的单元格,这样两个文件就会对齐... 之后我想再删除空单元格 - 它们将对齐...
你能帮我理解这样做的方法吗?
感谢, 尼姆罗德。
答案 0 :(得分:2)
很难确切地说出你希望完成的事情,但我认为这应该让你开始。
#!/usr/bin/env python
import csv
myfile = '/path/to/untitled.csv'
newfile = '/path/to/untitled_new.csv'
reader = csv.reader(open(myfile))
remove_me = {'3270','2500'}
print('Before:')
print(open(myfile).read())
for row in reader:
new_row = []
for column in row:
if column not in remove_me:
new_row.append(column)
csv.writer(open(newfile,'a')).writerow(new_row)
print('\n\n')
print('After:')
print(open(newfile).read())
<强>输出:强>
Before:
1950,1300,1180,48,48,400
3270,2500,1950,1300,1180
After:
1950,1300,1180,48,48,400
1950,1300,1180
确保在迭代同一个列表时没有使用list.remove,否则你可能会搞砸自己。我上面的代码使用了一种更安全的策略,即将通过if
测试的值(列不您希望摆脱的某个值)复制到新列表,然后编写新列表到新的.csv文件。
这或多或少是你打算做的吗?
为了摆脱空白单元格,我认为你可以将''
添加到remove_me
。
答案 1 :(得分:1)
我建议你循环文件中的每个值,然后放一些条件删除元素,然后将值合并到一个新的输出文件中
Step1阅读文件
import sys
import csv
updatedlist = []
for val in csv.reader(open('input1.csv' , 'rb')) :
print val
## val will be a list of each row ,
## So in this case you will have to
## select the elements while you will be looping
## then replace or removing the elements you want to remove
## and make a new updated list which you will then have
## to append to a new output.csv file
## then do the same the to the other file and append to the output.csv file
for Values in updatedlist :
##looping thru the values and then make a string of the values separated by commas
f = open('output.csv' , 'a')
f.writelines(updatestring) ##updated list with a string of comma separated values
f.close()