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

2024-04-29 06:16:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个CSV文件作为示例,其中有@handles。(Twitter句柄) 出于隐私原因,我需要移除每个手柄-例如@johnny,@rose,@lucy。在

这就是我目前所掌握的。。。。。但我想把每一行上的整个把手换成x

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

请帮忙!非常感谢!在


Tags: 文件csv示例line原因twitteropen句柄
2条回答

如果您的csv文件在同一行中包含所有twitter句柄,那么您可能希望使用Python内置的csv模块。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,这可能是最简单的方法。在

输入-卓越测试.csv公司名称:

^{pr2}$

输出-ExcelTest_新建.csv公司名称:

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

请注意,第三列已被删除。在

Regex在这方面肯定会有所帮助。循环遍历每一行并使用re.sub删除这些句柄。在

import re

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

示例:

^{pr2}$

现在,有一个额外的空间问题。。。隐马尔可夫模型。。。您可以像这样链接re.sub调用:

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

这只是假设您不希望多余的空间聚集在一起,一旦您清空了句柄。在

相关问题 更多 >