【问题标题】:Getting the data from multiple lists within a file从文件中的多个列表中获取数据
【发布时间】:2020-04-17 14:48:01
【问题描述】:

我正在尝试使用 python 创建一个 Instagram 机器人。 所以我的问题是我创建了一个文本文件,其中包含我的机器人关注的人的所有用户名,文本显示如下。

这些是我用来附加文件的代码行。

followers_list 包含所有用户的列表。

with open("file.txt", 'a') as file:
    file.write(str(followers_list))

这是将用户名输入文件的方式。

["user1"]["user2"]["user3"]

现在我想创建一个取消关注列表中所有用户的功能。因此,我将需要这些列表中的用户名,并且我一直在尝试查找有关如何执行此操作的信息,但我没有发现任何有用的信息。所以我需要关于如何做到这一点的建议。

【问题讨论】:

  • 您应该考虑将 JSON 写入您的文件,然后您可以重新加载列表。

标签: python selenium bots instagram


【解决方案1】:

首先,我建议您将:file.write(str(followers_list)) 更改为 file.write(",".join(str(followers_list)))。完成后,您可以简单地通过with open("file.txt", 'r') as f: lines=f.read() 读取文件,然后创建您需要的for 循环:for username in lines.split(",")

这是快速代码,可能需要一些调试,如果您可以编辑问题并添加一些示例,我们将能够为您提供更多帮助。仅提供变量follower_list 的示例就足够了,请随意添加假数据。

注意:使用 json 格式也可以代替逗号。

【讨论】:

  • 而不是 file.write(",".join(str(followers_list))) 我写了 file.write(",".join((followers_list))) 并且它有效。现在的问题是,当我再次启动程序并将用户名附加到文件中时,第一个用户名与上一个会话的最后一个用户名没有用逗号分隔。
  • @Percy04 你可以这样做:file.write(",")file.write(",".join((followers_list)))之后,所以下一次迭代总是有一个逗号!因此,在with 中,您将有两个writes,一个用于用户,用逗号分隔,一个额外的逗号。
  • 谢谢老兄。 file.write(",") 在我的程序中完美运行。
【解决方案2】:

不完全清楚这里有什么问题。无论是您要修复的写入功能还是读取功能。假设问题是这样的写函数应该得到你想要的结果。

 with open("file.txt", 'a') as file:
    for follower in followers_list:
       # assuming follower is a string therefore doesn't need to be converted
       file.write(follower)

否则,如果您需要从每个列表中选择用户名,请在阅读 follower_lists 时使用索引

例如

for follower_list in follower_lists:
    follower = follower_list[0]

【讨论】:

    【解决方案3】:

    现在你在 python 中没有一个完全有效的数据结构,所以像 jsonast 这样的模块会很棘手。如果您喜欢正则表达式,您可以尝试以下方法:

    import re
    userstr = '["user1"]["user2"]["user3"]'
    
    # capture everything except " in the group
    re.findall('\[\"([^\"]+)\"\]', userstr)
    ['user1', 'user2', 'user3']
    

    如果用户条目之间有换行符,这也将起作用:

    userstr = '''["user1"]["user2"]
    ["user3"]
    '''
    
    re.findall('\[\"([^\"]+)\"\]', userstr)
    ['user1', 'user2', 'user3']
    

    否则,我会同意@MarkMeyer 并尝试以某种 json 文件格式或与内置 python 数据结构更兼容的格式来获取这些用户。一个让生活更轻松的建议就是像这样格式化 users.txt:

    user1
    user2
    user3
    ...
    

    那么你可以这样做:

    with open('users.txt') as fh:
        # this will create a list of users, and strip()
        # removes leading/trailing whitespace 
        users = [user.strip() for user in fh]
    

    添加用户就这么简单

    with open('users.txt', 'a') as fh:
        fh.write('userN')
    

    【讨论】:

    • 非常感谢,但我使用了另一种我认为更简单的解决方案
    • 没问题,只要确保接受您认为最适合您的方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2020-09-24
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    相关资源
    最近更新 更多