Выводить только определенные элементы в текстовом файле в соответствии со строками из другого списка Python

#python #list #text-files

#python #Список #текстовые файлы

Вопрос:

У меня есть список строк:

 myStrings = [Account,Type, myID]
  

У меня также есть txt file with numbers , связанный с этими строками, например:

 [90: 'Account', 5: 'Type', 6: 'MyID', 8: 'TransactionNum', 9: 'Time']
  

Как я могу распечатать only the numbers and strings in the txt file это in myStrings . Например, поскольку 'Time' is not in myStrings , I do not want to print it . Я также хотел бы сделать это txt file a list

Комментарии:

1. можете ли вы подробно показать, что содержит этот текстовый файл? это не так понятно

2. если текстовый файл создан вами, создайте его в формате json, чтобы было легко выполнить требуемую задачу

3. если вы действительно хотите обрабатывать как текстовый файл, вам нужно прочитать содержимое, которое будет строкой, и вам нужно применить разделение строк или регулярное выражение

4. текстовый файл выглядит следующим образом: 831: ‘Учетная запись’, 30: ‘Тип’

5. есть ли у вас 90: 'Account' , '5': 'Type' etc в отдельных строках в текстовом файле?? или вам это точно нравится, что вы показали?? с [ ... ] помощью одной строки??

Ответ №1:

Это должно помочь вам:

 myStrings = ['Account','Type', 'myID']
f = open("D:\Test.txt","r")
txt = f.read()
f.close()

txt = txt.replace('n',' ')

txt = txt.split(',')

txtlst = []
for x in txt:
    txtlst.append(x.split(':'))

numslst = [int(txtlst[i][0]) for i in range(len(txtlst))]

strlst = []

for i in txtlst:
    for j in i:
        try:
            int(j)
        except ValueError:
            strlst.append(j.replace("'",""))

for x in range(len(strlst)):
    strlst[x] = strlst[x].replace(' ','')

for x in range(len(strlst)):
    if strlst[x] in myStrings:
        print(numslst[x])
        print(strlst[x])
  

Вывод:

 90
Account
5
Type
  

Ответ №2:

После того, как вы сказали, что в файле нет [ amp; ] , можно заставить его работать следующим образом :

 import json
myStrings = ['Account','Type', 'myID']

with open('text-file.txt') as filename:
  file_text = filename.read()


file_text_list = file_text.split(',')
file_text_dict = {}
for item in file_text_list:
  k, v = item.split()
  v = v.replace("'", "")
  k = k.replace(":", "")
  if v in myStrings:
    file_text_dict[k] = v
print(file_text_dict)  # output => {'90': 'Account', '5': 'Type'}
print(list(file_text_dict.values()))  # output => ['Account', 'Type']