Мне нужно найти pidlist и pmtpid с идентификатором службы в python
Содержимое файла:
serviceid=2251:tsid=6:orignetwid=99:access=clear:pids=3:clearpids=3:scrambledpids=0:packets=2315:bitrate=1745711:bitrate204=1894282:servtype=1:pmtpid=3251:pcrpid=5251:pidlist=3251,5251,6251
Код:
file = open('t5001.txt','r')
file1 = file.read()
file2 = file1.split(":")
Input = input("Enter The student ID :- ")
for i in file2:
if Input in i:
print(i)
file.close()
Я написал этот код, но не получил ответа, я делаю просто глупую ошибку и не могу получить этот код, может кто-нибудь поможет мне
Лучший способ сделать это: создать словарь и сохранить все элементы, чтобы вы могли легко получить его позже:
d = {}
for item in file.read().split(':'):
key, value = item.split('=')
d[key] = value
print(d)
# output
# {'serviceid': '2251', 'tsid': '6', 'orignetwid': '99', 'access': 'clear', 'pids': '3', 'clearpids': '3', 'scrambledpids': '0', 'packets': '2315', 'bitrate': '1745711', 'bitrate204': '1894282', 'servtype': '1', 'pmtpid': '3251', 'pcrpid': '5251', 'pidlist': '3251,5251,6251'}
Если вы хотите получить список ['3251','5251','6251']
вместо чистой строки 3251,5251,6251
, добавьте еще одну проверку условия:
d = {}
for item in file.read().split(':'):
key, value = item.split('=')
if ',' in value:
d[key] = value.split(',')
else:
d[key] = value
print(d['pidlist'])
# output
# ['3251','5251','6251']
После того, как вы составили словарь d
, все становится проще:
if Input == d['serviceid']:
print('pidlist: ', d['pidlist'])
print('pmtpid: ', d['pmtpid'])
Почему бы не использовать функцию exec?
file = open('t5001.txt','r')
for i in file.read().split(':'):
try:
exec(i)
except NameError:
pass
#only access = clear won't be executed
file.close()
Input = int(input("Enter The Service ID :- "))
if serviceid==Input:
print(f'{pidlist = }\n{pmtpid = }')
У каждого & каждого значения (кроме acccess
) есть ссылка на переменную с таким же именем, как в файле.
Выход:
Enter The Service ID :- 2251
pidlist = (3251, 5251, 6251)
pmtpid = 3251