2017-11-19 6 views
0

CSVファイルを扱っていて、件名に "RE:"と "FW:"を削除しようとしています。電子メールの会話。私の現在のコードでは、エラーメッセージ "TypeError:予想される文字列またはバイトのようなオブジェクト"が表示されます。どのように私はこの変更を実行し、私はさらに操作することができるオブジェクトとして出力を保存する可能性についてのアドバイス?私はPythonには新しく、同様のソリューションを探していましたが、どんな入力でも大歓迎です。あなたのコードでCSVファイルからRE:とFW:を削除し、出力をオブジェクトとして保存します。

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) 
+0

のためにそれが簡単にあなたの質問に答えるのに役立ちますあなたのexamplefile.csvを投稿する方が良いでしょう

。 – caot

+0

文字列は不変です。 'data'はあなたがちょうどそれを持っていれば変更されません。また、csvリーダーオブジェクトをサブすることはできません –

答えて

0

は、datacsv.readerオブジェクトではなく、ファイルの実際の内容です。私の推測では、あなたのcsvファイルの1つのフィールドから'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) 
+0

ありがとう、ありがとう、ちょうど私が探しているものです –

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])) 
関連する問題