gpt4 book ai didi

python - TypeError : 'in ' requires string as left operand, 不是 Python 中的生成器

转载 作者:行者123 更新时间:2023-12-01 06:06:49 33 4
gpt4 key购买 nike

我正在尝试解析推文数据。

我的数据形状如下:

59593936 3061025991 null null <d>2009-08-01 00:00:37</d> <s>&lt;a href="http://help.twitter.com/index.php?pg=kb.page&amp;id=75" rel="nofollow"&gt;txt&lt;/a&gt;</s> <t>honda just recalled 440k accords...traffic around here is gonna be light...win!!</t> ajc8587 15 24 158 -18000 0 0 <n>adrienne conner</n> <ud>2009-07-23 21:27:10</ud> <t>eastern time (us &amp; canada)</t> <l>ga</l>
22020233 3061032620 null null <d>2009-08-01 00:01:03</d> <s>&lt;a href="http://alexking.org/projects/wordpress" rel="nofollow"&gt;twitter tools&lt;/a&gt;</s> <t>new blog post: honda recalls 440k cars over airbag risk http://bit.ly/2wsma</t> madcitywi 294 290 9098 -21600 0 0 <n>madcity</n> <ud>2009-02-26 15:25:04</ud> <t>central time (us &amp; canada)</t> <l>madison, wi</l>

我想获取推文总数以及与关键字相关的推文数量。我在文本文件中准备了关键字。另外,我想获取推文文本内容、包含提及(@)、转发(RT)和URL的推文总数(我想将每个URL保存在其他文件中)。

所以,我是这样编码的。

import time
import os

total_tweet_count = 0
related_tweet_count = 0
rt_count = 0
mention_count = 0
URLs = {}

def get_keywords(filepath, mode):
with open(filepath, mode) as f:
for line in f:
yield line.split().lower()

for line in open('/nas/minsu/2009_06.txt'):
tweet = line.strip().lower()

total_tweet_count += 1

with open('./related_tweets.txt', 'a') as save_file_1:
keywords = get_keywords('./related_keywords.txt', 'r')

if keywords in line:
text = line.split('<t>')[1].split('</t>')[0]

if 'http://' in text:
try:
url = text.split('http://')[1].split()[0]
url = 'http://' + url

if url not in URLs:
URLs[url] = []
URLs[url].append('\t' + text)

save_file_3 = open('./URLs_in_related_tweets.txt', 'a')
print >> save_file_3, URLs

except:
pass

if '@' in text:
mention_count +=1

if 'RT' in text:
rt_count += 1

related_tweet_count += 1

print >> save_file_1, text

save_file_2 = open('./info_related_tweets.txt', 'w')

print >> save_file_2, str(total_tweet_count) + '\t' + srt(related_tweet_count) + '\t' + str(mention_count) + '\t' + str(rt_count)

save_file_1.close()
save_file_2.close()
save_file_3.close()

以下是示例关键字

Depression
Placebo
X-rays
X-ray
HIV
Blood preasure
Flu
Fever
Oral Health
Antibiotics
Diabetes
Mellitus
Genetic disorders

我认为我的代码有很多问题,但第一个错误如下:

回溯(最近一次调用):文件“health_lated_tweets.py”,第 23 行,在 if 行中的关键字中:TypeError: 'in ' 需要字符串作为左操作数,而不是生成器

请帮帮我!

最佳答案

原因是 keywords = get_keywords(...) 返回一个生成器。按逻辑思考,keywords应该是所有关键词的列表。对于此列表中的每个关键字,您想要检查它是否在推文/行中。

示例代码:

keywords = get_keywords('./related_keywords.txt', 'r')
has_keyword = False
for keyword in keywords:
if keyword in line:
has_keyword = True
break
if has_keyword:
# Your code here (for the case when the line has at least one keyword)

(上面的代码将替换 if keywords in line:)

关于python - TypeError : 'in ' requires string as left operand, 不是 Python 中的生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7627803/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com