#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']