Parse String between 2 Delimiters and add as single list items - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Parse String between 2 Delimiters and add as single list items (/thread-33273.html) |
Parse String between 2 Delimiters and add as single list items - lastyle - Apr-11-2021 Hi all. I`ve got a big string that contains multiple different data. The dataitems are seperated by {data} I want to grab the data between theese 2 delimiters { and } and add them as a single item to another list. i was using the code. file = open('csdb.rss',mode='r') # read all lines at once all_of_it = file.read() data = [] data.append( re.findall(r'\{({^}}*)\}', all_of_it))but this didnt work and added the whole content as just one list item. How should i call it parser correctly ? or as alternative read the file and parse it while reading and then append to the list as items ? a sample sting is like : {"name":"Freaky Fish DX +3PD [retailversion]","id":"202669","category":0,"group":"Onslaught","year":2021,"handle":"Shocker,Bieno64,Didi,Jazzcat","rating":0,"updated":"2021-04-07","released":"2021-04-06"},{"name":"Mimizuku Saga 10","id":"202614","category":0,"group":"Commocore","year":2021,"handle":"Bago Zonde","rating":0,"updated":"2021-04-07","released":"2021-04-05"},{"name":"Big Time Bugger","id":"202613","category":0,"group":"Commocore","year":2021,"handle":"Bago Zonde","event":"Cassette 50 Charity Competition","rating":0,"updated":"2021-04-05","released":"2021-03-30"} RE: Parse String between 2 Delimiters and add as single list items - bowlofred - Apr-11-2021 Except for not having brackets around it, this appears to be valid JSON. I'd add the brackets and parse as JSON. That will give you a list of dicts that you can read. import json file = open('csdb.rss', mode='r') json_string = "[" + file.read().rstrip() + "]" data = json.loads(json_string) print(f"The first element is {data[0]}") print("The keys and values in the first element are:") for k, v in data[0].items(): print(f"{k} => {v}") RE: Parse String between 2 Delimiters and add as single list items - lastyle - Apr-11-2021 (Apr-11-2021, 09:41 PM)bowlofred Wrote: Except for not having brackets around it, this appears to be valid JSON. I'd add the brackets and parse as JSON. That will give you a list of dicts that you can read. ouch my Bad, i posted to the wring Subcategory. My python version is 2.7.18 There the Syntax is different and i get the error File "F:\GP\C64\BBS\csdbrss\grabcsdb.py", line 34 print(f"The first element is {data[0]}") ^ SyntaxError: invalid syntax RE: Parse String between 2 Delimiters and add as single list items - Yoriz - Apr-11-2021 import re text = '{"name":"Freaky Fish DX +3PD [retailversion]","id":"202669","category":0,"group":"Onslaught","year":2021,"handle":"Shocker,Bieno64,Didi,Jazzcat","rating":0,"updated":"2021-04-07","released":"2021-04-06"},{"name":"Mimizuku Saga 10","id":"202614","category":0,"group":"Commocore","year":2021,"handle":"Bago Zonde","rating":0,"updated":"2021-04-07","released":"2021-04-05"},{"name":"Big Time Bugger","id":"202613","category":0,"group":"Commocore","year":2021,"handle":"Bago Zonde","event":"Cassette 50 Charity Competition","rating":0,"updated":"2021-04-05","released":"2021-03-30"}' results = re.findall('{(.+?)}', text) for result in results: print(result)
RE: Parse String between 2 Delimiters and add as single list items - bowlofred - Apr-11-2021 (Apr-11-2021, 09:52 PM)lastyle Wrote: ouch my Bad, i posted to the wring Subcategory. My python version is 2.7.18 2.7 won't have f-strings. Just change the print to use another format method. for k, v in data[0].items(): print(" => ".join((str(k), str(v)))) RE: Parse String between 2 Delimiters and add as single list items - lastyle - Apr-11-2021 (Apr-11-2021, 11:00 PM)bowlofred Wrote:(Apr-11-2021, 09:52 PM)lastyle Wrote: ouch my Bad, i posted to the wring Subcategory. My python version is 2.7.18 Both replies (approaches) work like a charm. Thanks for a lot |