Dobry den.
V pythone3 dostanem string kde je zoznam poslednych transakcii nieco all (" is:456,value: 567") ,("is:456,value:865")..
Ako dosiahnut to aby mi s toho listu vypisalo len to co chcem vyhladat? Teda input is:456 a vrati mi to cely riadok? Ako to spravit tak aby mi to vratilo vsetky riadky kde je hladany retazec?
Nastudujte si regulární výrazy.
Presiel som si regularne vyrazy ale obavam sa ze to neriesi moj problem, resp. nieco mi uslo.
Viem najst zaciatok retazca a koniec ale neviem ako vypisat udaje ktore su medzi nim.
print(res.text)
buf = res.text
m = re.findall('\[\{', buf)
print(m)
Citace od: Josef Gores kdy 07. 01. 2019, 08:56:53
Dobry den.
V pythone3 dostanem string kde je zoznam poslednych transakcii nieco all (" is:456,value: 567") ,("is:456,value:865")..
Ako dosiahnut to aby mi s toho listu vypisalo len to co chcem vyhladat? Teda input is:456 a vrati mi to cely riadok? Ako to spravit tak aby mi to vratilo vsetky riadky kde je hladany retazec?
Dotaz je nesrozumitelny, pises o _string_, ale ukazujes neco jako _tuply_ nebo co a ptas se na _list_.
Zdravim, ak je vstup jeden dlhy string, tak by som zacal string.split a ak je v tych datach nieco unikatne, tak sup do mapy/slovnika. Inak ohladom regularnych vyrazov re.compile ... match... group je jeden zo sposobov, ako sa dostat k najdenej hodnote.
input_data = '(" is:456,value: 567") ,("is:456,value:865")'
def strlist_to_list(str_list, separator=','): # rozdel string podle znaku do listu a trimuj ze zacatku a konce netisknutelne znaky
out_list = []
in_list = str_list.split(separator)
for i, item in enumerate(in_list):
item = item.strip()
if item != '':
out_list.append(item)
return out_list
def get_from_input(input_data, find_value):
input_data = input_data.replace(') ,', '),') # vyhod mezery mezi )_, a ,_(
input_data = input_data.replace(', (', ',(')
input_data = input_data.strip('"') # vygumuj "
list_data = strlist_to_list(input_data, '),(') # rozdel na list podle znaku ),(
if len(list_data) > 0:
list_data[0] = list_data[0].strip('(') # vygumuj uplne prvni (
list_data[len(list_data) - 1] = list_data[len(list_data)-1].strip(')') # vygumuj posledni
for i in range(0, len(list_data)):
list_data[i] = list_data[i].strip('"') # vyhod " ze zacatku a konce
list_data[i] = list_data[i].strip() # a mezery
out_data = [] # seber vysledky
for line in list_data:
line_values = strlist_to_list(line, ',')
if len(line_values) > 1:
if line_values[0] == find_value: # is:xxx cast je find_value (is:456), tak dej druhou pulku k vysledkum (value: 567)
out_data.append(line_values[1])
return out_data
# start
print('vstup:')
print(input_data)
print('')
filtered_data = get_from_input(input_data, 'is:456')
print('vystup:')
for data_line in filtered_data:
print(data_line)