I’m reading a response from a source which is an journal or an essay and I have the html response as a string like:
According to some, dreams express “profound aspects of personality” (Foulkes 184), though others disagree.
My goal is just to extract all of the quotes out of the given string and save each of them into a list. My approach was:
[match.start() for m in re.Matches(inputString, ""([^"]*)""))]
Somehow it didn’t work for me. Any helps on my regex here? Thanks a lot.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Provided there are no nested quotes:
re.findall(r'"([^"]*)"', inputString)
Demo:
>>> import re >>> inputString = 'According to some, dreams express "profound aspects of personality" (Foulkes 184), though others disagree.' >>> re.findall(r'"([^"]*)"', inputString) ['profound aspects of personality']
Method 2
Use this one if your input can have something like this: some "text " and text" more
s = '''According to some, dreams express "profound aspects of personality" (Foulkes 184), though others disagree.''' lst = re.findall(r'"(.*?)(?<!\)"', s) print lst
Using (?<!\) negative lookbehind it is checking there is no before the "
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0