2015-02-23 59 views
0

我正在使用Python的Twitter搜索API對Twitter消息的某個關鍵字進行研究。在Python中使用特定條件刪除行

現在我有一個很大的CSV文件,由包含此關鍵字的消息組成,也包含用戶名中的關鍵字。所以這些消息不是關於關鍵字,關鍵字恰好在用戶名中。

例子:

  • 一個corrrect行中我的CSV: @Koningsbruggen啾啾:@CGCommunicatie是你們的 「KEYWORD」?

  • 不正確的排在我的CSV: @ 「KEYWORD」 _lady啾啾:@rvanbommel是多數民衆贊成沒關係

如何刪除使用Python代碼後一行? 我得到了一個帶有120K行的csv,所以自動刪除這些不正確的行會很好。

+0

*如何使用Python代碼刪除後一行?*是的,您可以。嘗試編寫一個讀取數據的腳本,並且當您在過濾器行上卡住時,會返回一個新問題。 – 2015-02-23 14:28:27

+0

[打開文件並迭代它](https://docs.python.org/2.7/tutorial/inputoutput.html#reading-and-writing-files),['''split'''](https: //docs.python.org/2.7/library/stdtypes.html#str.split)冒號的每一行(''':'''),['''if'''](https:// docs .python.org/2.7/tutorial/controlflow.html#if-statements)該行符合您的標準,[保存在列表中](https://docs.python.org/2.7/tutorial/introduction.html#lists ) – wwii 2015-02-23 14:31:10

回答

1

如果你的INP UT文件是由發件人行列表行:

ATamsterdam_lady tweeted: ATrvanbommel ja dikke vlokken 
ATKoningsbruggen tweeted: ATCGCommunicatie zitten jullie in Amsterdam? 
ATJustoRasta tweeted: febovers ... AT Leidseplein - Amsterdam Centrum t.co/KCUCzj2dWq 
AT7Ash_bash tweeted: #HENNY AND AMSTERDAM TONIGHT 

那麼你可以使用下面的Python代碼:

input_file = 'twitter.txt' 
output_file = 'result.txt' 
keyword = 'Amsterdam' 

with open(input_file) as f: 
    lines = f.readlines() 

for line in lines: 
    message = line.split('tweeted: ')[1] 
    if keyword.lower() in message.lower(): 
     with open(output_file, 'a') as myfile: 
      myfile.write(line) 

生成的輸出文件包含行文字行與包括「阿姆斯特丹」只有在'消息'部分:

ATKoningsbruggen tweeted: ATCGCommunicatie zitten jullie in Amsterdam? 
ATJustoRasta tweeted: febovers ... AT Leidseplein - Amsterdam Centrum t.co/KCUCzj2dWq 
AT7Ash_bash tweeted: #HENNY AND AMSTERDAM TONIGHT 
+0

我的輸入是一個csv,如下所示: ATamsterdam_lady推文:ATrvanbommel ja dikke vlokken ATKoningsbruggen在推特上發表了:ATCGCommunicatie zitten jullie在阿姆斯特丹? ATJustoRasta推文:febovers ... AT Leidseplein - 阿姆斯特丹中心http://t.co/KCUCzj2dWq AT7Ash_bash發推送:#HENNY和AMSTERDAM晚上! 所以只有1條Twitter消息的每一行。 – mvh 2015-02-23 19:11:58

+0

@mvh,我根據你的意見更新了腳本。現在應該工作。 – Alderven 2015-02-23 19:45:24

+0

按文件逐行顯示我的文件,但沒有;在每行的結尾處。此外,我還想逐行獲取我的輸出結果。我只需要更改: writer = csv.writer(csv_file,delimiter ='\ n') 那麼分隔符?謝謝 – mvh 2015-02-24 10:32:53

0

如果您加載您的tweets到大熊貓數據幀那麼可以非常方便快捷地過濾:

In [11]: 

df = pd.DataFrame({'tweet':['@Koningsbruggen tweeted: @CGCommunicatie are you guys in "KEYWORD"?', '@"KEYWORD"_lady tweeted: @rvanbommel yes thats okay']}) 
df 
Out[11]: 
               tweet 
0 @Koningsbruggen tweeted: @CGCommunicatie are y... 
1 @"KEYWORD"_lady tweeted: @rvanbommel yes thats... 

我們可以調用矢量化str方法split鳴叫,並將其篩選使用contains

In [25]: 

df[df.tweet.str.split('tweeted:').str[1].str.contains('KEYWORD')] 
Out[25]: 
               tweet 
0 @Koningsbruggen tweeted: @CGCommunicatie are y... 

有許多方法將數據加載到熊貓:http://pandas.pydata.org/pandas-docs/stable/io.html