0

我有两种类型的 CSV 文件,我想将它们合并在一起。为此,我想在每一行中找到某些值并在它们存在时将其删除。

我尝试使用list.Indexlist.Remove函数,但当值不在特定文件中时出现错误。

例如,这两行是(为了更好地显示,我剪掉了其余的行):

CSV 1950    1300    1180    48  48  400 2   PASS        0   51:31.5
CSV 3270    2500    1950    1300    1180                        48

我想找到值“ 3270 ”和“ 2500 ”的单元格,这样两个文件就会对齐……之后我想再次删除空单元格——它们会对齐……

你能帮我理解这样做的方法吗?

谢谢,宁录。

4

2 回答 2

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.

于 2013-07-23T16:59:21.710 回答
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()
于 2013-07-23T17:10:25.033 回答