Получение данных из нескольких списков в файле - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь создать бота Instagram , используя python. Поэтому моя проблема в том, что я создал текстовый файл, который будет содержать все имена пользователей, за которыми следует мой бот, и текст выглядит следующим образом.

Это строки кода, которые я использовал для добавления файла ,

followers_list содержит список всех пользователей.

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

Так имена пользователей вводятся в файл.

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

Теперь я хочу сделать функцию, которая отменяет все пользователи, присутствующие в списке. Поэтому мне понадобится имя пользователя из этих списков, и я пытался найти информацию о том, как это сделать, но я не нашел ничего полезного. Поэтому мне нужны предложения о том, как это сделать.

Ответы [ 3 ]

0 голосов
/ 17 апреля 2020

Прежде всего, я бы предложил вам изменить: file.write(str(followers_list)) на file.write(",".join(str(followers_list))). Как только это будет сделано, вы можете просто прочитать файл через with open("file.txt", 'r') as f: lines=f.read(), а затем сделать для l oop то, что вам нужно: for username in lines.split(",").

Это быстрый код, возможно, потребуется отладка, если вы можете отредактировать вопрос и добавить несколько примеров, мы сможем вам помочь больше. Только с примером переменной follower_list должно быть достаточно, не стесняйтесь добавлять поддельные данные.

Примечание: Также вместо запятых было бы неплохо использовать формат json.

0 голосов
/ 17 апреля 2020

Не совсем понятно, в чем здесь проблема. Являетесь ли вы функцией записи или функцией чтения, которую вы пытаетесь исправить. Предполагая, что проблема заключается в функции записи, что-то вроде этого должно получить желаемые результаты.

 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]
0 голосов
/ 17 апреля 2020

В данный момент у вас нет полностью корректной структуры данных в python, поэтому такие модули, как json и ast будут сложными. Если вы склонны к регулярному выражению, вы можете попробовать следующее:

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')
...