Python Forum
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.

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}")

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)
Output:
"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

(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

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))))

Both replies (approaches) work like a charm.

Thanks for a lot