Python - 需要从csv文件中删除特定值

时间:2017-07-14 02:05:56

标签: python csv

我创建了一个CSV文件作为样本,我有@handles。 (Twitter处理) 出于隐私原因,我需要删除每个句柄 - 例如@johnny,@ ros,@ lucy。

这就是我到目前为止......但是我想用x替换每一行的整个句柄。

file = open('./ExcelTest.csv', 'r')
for line in file:
    #temp = line.find("@")
    line.replace("@"," ")
    print(line)

请帮忙!非常感谢!

2 个答案:

答案 0 :(得分:1)

Regex肯定会有所帮助。遍历每一行并使用re.sub来摆脱这些句柄。

import re

...    
new_line = re.sub('@[\S]+', '', line)
....

示例:

In [65]: line = "help me @lucy I'm drowning"

In [66]: re.sub('@[\S]+', '', line)
Out[66]: "help me  I'm drowning"

现在,有额外空间的问题......嗯......你可以链接re.sub这样的电话:

new_line = re.sub('[\s]+', ' ', re.sub('@[\S]+', '', line)) 

这只是假设一旦你使句柄无效就不希望有额外的空格聚集在一起。

答案 1 :(得分:0)

如果您的csv文件包含同一行中的所有Twitter句柄,您可能需要使用内置csv模块的Python。 csv模块允许您将每行读取为Python列表,并且您可以在特定索引处简单地删除列表中的元素。然后,您可以将输出写回新文件。

import csv

file_handler = open('./ExcelTest.csv','r')
file_handler_write = open('./ExcelTest_New.csv','w')

csv_reader = csv.reader(file_handler,delimiter=',')
csv_writer = csv.writer(file_handler_write,delimiter=',')


twitter_handle_col = 2 # set the twitter handle column here

for line in csv_reader:
    del line[twitter_handle_col]
    csv_writer.writerow(line)

file_handler_write.close()
file_handler.close()

列和分隔符可能在您的特定情况下有所不同,但如果使用csv,这可能是最简单的方法。

输入 - ExcelTest.csv:

a,b,c,d
b,c,d,a
d,c,b,a

输出 - ExcelTest_New.csv:

a,b,d
b,c,a
d,c,a

请注意,第三列已删除。