Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Josef Gores 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?
-
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)
-
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)