python - 迭代 python 列表的最佳方法是什么,排除某些值并打印出结果

标签 python list

我是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(出于隐私考虑,我已经对此进行了编辑)

我想清除此输出(这是一个列表),并排除以下内容:

  1. 条目
  2. 任何以字符串 "Photo:" 开头的内容
  3. 如果我能排除非 unicode 数据,那将是一个奖励

我试过下面的代码

  1. 使用 data.remove("None:") 但出现错误 list.remove(x): x not in list.
  2. 将我不想要的项目读取到集合中,然后对输出进行比较,但没有成功。
  3. 正在研究列表推导式,但想知道我是否正在寻找正确的解决方案。

我来自 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/

相关文章:

python - 与正在运行的 ubuntu python 服务器进程通信

python - 从 Python 调用 cpp 函数时出现段错误

python - 在Python中迭代列表并连接字母顺序

java - 如何使用 xStream 输出具有列表属性的 Java 对象?

python - 在列表中查找并计算相等的字典

python - Pandas :过去n天的平均值

python - 如何扩展XSD方案以支持SVG?

python - 唯一计算相邻两行的百分比差异

c++ - 模板集合的不同排序方法

java - 假设列表类型是 int java