从CSV文件中删除RE:和FW:然后将输出保存为对象

时间:2017-11-19 02:58:17

标签: python csv

我正在使用csv文件并尝试删除" RE:"和" FW:"从主题行,所以我可以进一步总结电子邮件对话的数据。使用我当前的代码,我收到错误消息" TypeError:期望字符串或类字节对象"。关于如何执行此更改然后将输出保存为可以进一步操作的对象的任何建议?我是python的新手,一直在寻找类似的解决方案,但任何输入都将非常感激。

import csv
import re


f = open('examplefile.csv',"r+")

p = re.compile('([\[\(] *)?.*(RE?S?|FWD?|Fwd?|re\[\d+\]?) *([-:;)\]][ :;\])-]*)|\]+ *$', re.IGNORECASE)

data = csv.reader(f)

p.sub("",data)

for row in data:
  print (row)

2 个答案:

答案 0 :(得分:0)

在您的代码中,datacsv.reader对象,但不是文件的实际内容。我的猜测是你要从csv文件中的一个字段中删除'RE''FW'

如果主题行是csv文件中的第3列(Python中为2),则可以执行以下操作:

import csv
import re

p = re.compile('([\[\(] *)?.*(RE?S?|FWD?|Fwd?|re\[\d+\]?) *([-:;)\]][ :;\])-]*)|\]+ *$', re.IGNORECASE)

with open('examplefile.csv',"r+") as f:
    f_reader = csv.reader(f)
        for row in f_reader:
            subject = p.sub("", row[2]) #clean the 3rd column
            print(subject)

答案 1 :(得分:0)

您需要替换行数据,而不是读取器对象。

例如

p = re.compile('([\[\(] *)?.*(RE?S?|FWD?|Fwd?|re\[\d+\]?) *([-:;)\]][ :;\])-]*)|\]+ *$', re.IGNORECASE)

with open('examplefile.csv',"r+") as f:
    data = csv.reader(f)
    for row in data:
       print (p.sub("",row[0]))