我是python的新手,有一个问题:
我检查了类似的问题,检查了教程 dive into python,检查了 python 文档、googlebinging、类似的 Stack Overflow 问题和其他十几个教程。
我有一段 python 代码可以读取包含 20 条推文的文本文件。我可以使用以下代码提取这 20 条推文:
with open ('output.txt') as fp:
for line in iter(fp.readline,''):
Tweets=json.loads(line)
data.append(Tweets.get('text'))
i=0
while i < len(data):
print data[i]
i=i+1
上面的 while 循环完美地迭代并从 output.txt
中打印出 20 条推文(行)。
然而,这 20 行包含非英语字符数据,如 "Los ladillo a los dos, soy maaaala o maloooooooooooooo"
,URL 如 "http://t.co/57LdpK"
,字符串 "None"
和带有这样 URL 的照片 "Photo: http://t.co/kxpaaaaa
(出于隐私考虑,我已经对此进行了编辑)
我想清除此输出(这是一个列表
),并排除以下内容:
无
条目- 任何以字符串
"Photo:"
开头的内容 - 如果我能排除非 unicode 数据,那将是一个奖励
我试过下面的代码
- 使用
data.remove("None:")
但出现错误list.remove(x): x not in list.
- 将我不想要的项目读取到集合中,然后对输出进行比较,但没有成功。
- 正在研究列表推导式,但想知道我是否正在寻找正确的解决方案。
我来自 Oracle 背景,其中有一些功能可以删除任何想要/不需要的输出部分,所以在过去的 2 个小时里真的绕了圈子。非常感谢任何帮助!
最佳答案
尝试这样的事情:
def legit(string):
if (string.startswith("Photo:") or "None" in string):
return False
else:
return True
whatyouwant = [x for x in data if legit(x)]
我不确定这是否适用于您的数据,但您明白了。如果您不熟悉,[x for x in data if legit(x)]
称为列表理解
关于python - 迭代 python 列表的最佳方法是什么,排除某些值并打印出结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16548176/