我正在使用Twitter的Twitter搜索API对某些关键字的Twitter消息进行研究。
现在我有一个大型CSV文件,包含包含此关键字的消息,但也包含用户名中的关键字。因此,这些消息与关键字无关,关键字恰好位于用户名中。
示例:
我的csv中的一个正确的行: @Koningsbruggen发推文:@CGCommunicatie你们是" KEYWORD"?
我的csv中的行不正确: @" KEYWORD" _lady推特:@rvanbommel是的,没关系
如何使用Python代码删除后一行? 我有一个120K行的csv,所以自动删除这些不正确的行会很好。
答案 0 :(得分:1)
如果您的输入文件是消息的逐行列表:
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
答案 1 :(得分:0)
如果您将推文加载到pandas数据框中,那么可以非常轻松快速地过滤:
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...
有许多方法可以将数据加载到pandas中:http://pandas.pydata.org/pandas-docs/stable/io.html