2017-07-14 5 views
0

私は@handlesを持つサンプルとしてCSVファイルを作成しました。 (Twitterのハンドル) 私はプライバシーの理由から、@ johnny、@rose、@lucyのように、それぞれのハンドルを削除する必要があります。Python - CSVファイルから特定の値を削除する必要があります

これは私がこれまで持っていたものですが、各行のハンドル全体をxに置き換えたいと思います。

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

助けてください!本当にありがとう!

答えて

1

正規表現は確かに役に立ちます。各行をループし、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)) 

これが唯一であります一度ハンドルを無効にすると余分なスペースが一緒にクラスタリングされることを望まないと仮定します。

0

あなたのcsvファイルに同じ行のすべてのツイッターハンドルが含まれている場合は、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を使用する場合は最も簡単な方法です。

入力 - ExcelTest.csv:

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

出力 - ExcelTest_New.csv:3番目の列が削除されたことを

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

注意してください。

関連する問題