我创建了一个CSV文件作为样本,我有@handles。 (Twitter处理) 出于隐私原因,我需要删除每个句柄 - 例如@johnny,@ ros,@ lucy。
这就是我到目前为止......但是我想用x替换每一行的整个句柄。
file = open('./ExcelTest.csv', 'r')
for line in file:
#temp = line.find("@")
line.replace("@"," ")
print(line)
请帮忙!非常感谢!
答案 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
请注意,第三列已删除。