Regex error: 'NoneType' object has no attribute 'group' - 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: Regex error: 'NoneType' object has no attribute 'group' (/thread-712.html) |
Regex error: 'NoneType' object has no attribute 'group' - DBS - Oct-31-2016 Hello, In the code below, I receive the error listed in the title of my question. I'm trying to extract the substring between asterisks: 'Some text: **string1;string2;string3**'. If I change the print statement to print(result.group(1)), I get the correct results (string1;string2;string3), but when I assign it to the variable result as I have in the code and print result, I get the error message. How do I use .group() correctly during the result variable assignment? last_validation_comment_lst = validation_comment_lst[-1] last_validation_comment_string = ''.join(last_validation_comment_lst) result = re.search('\*\*(.*)\*\*', last_validation_comment_string).group(1) print(result) RE: Regex error: 'NoneType' object has no attribute 'group' - wavic - Oct-31-2016 Hello! Is not the answer to your question but why don't you use the built-in strip()? For me it is a lot easier since '**' are at the both ends of the string. '**string1;string2;string3**'.strip('**') RE: Regex error: 'NoneType' object has no attribute 'group' - snippsat - Oct-31-2016 It should work the same way. >>> import re >>> s = '**string1;string2;string3**' >>> r = re.search(r'\*\*(.*)\*\*', s) >>> r.group(1) 'string1;string2;string3' >>> #Now assign to variable r >>> r = re.search(r'\*\*(.*)\*\*', s).group(1) >>> r 'string1;string2;string3' RE: Regex error: 'NoneType' object has no attribute 'group' - nilamo - Oct-31-2016 If there is no match, re.search returns None. So check to make sure there are groups, before trying to get the group. RE: Regex error: 'NoneType' object has no attribute 'group' - DBS - Oct-31-2016 (Oct-31-2016, 12:18 PM)snippsat Wrote: It should work the same way.When I assign the variable to r as you have above, I get the error message, but if print r.group(1), I get the intended results?? (Oct-31-2016, 06:35 AM)wavic Wrote: Hello! Actually there is text before the first instance of '**'. I will adjust my question accordingly. So its "Some text: **string1;string2;string3**", but the colon is before the first instance so I may be able to start there somehow and then get the intended text?? (Oct-31-2016, 02:23 PM)nilamo Wrote: If there is no match, re.search returns None. So check to make sure there are groups, before trying to get the group. What's throwing me is if I print(result.group(1)), I get the intended results. If it's None, why does it print? RE: Regex error: 'NoneType' object has no attribute 'group' - snippsat - Oct-31-2016 (Oct-31-2016, 05:31 PM)DBS Wrote: When I assign the variable to r as you have above, I get the error message, but if print r.group(1), I get the intended results??With the same code as i post? Here as a script,tested Python 2 and 3. import re s = '**string1;string2;string3**' r = re.search(r'\*\*(.*)\*\*', s) print(r.group(1)) #Now assign to variable r r = re.search(r'\*\*(.*)\*\*', s).group(1) print(r)
RE: Regex error: 'NoneType' object has no attribute 'group' - DBS - Oct-31-2016 (Oct-31-2016, 05:54 PM)snippsat Wrote:Same result. If I print(r.group(1)), I get the correct results, but when I assign .group(1) to r, I get the error message. Is there a bug or another step I may need to do for decoding or escaping asterisks??(Oct-31-2016, 05:31 PM)DBS Wrote: When I assign the variable to r as you have above, I get the error message, but if print r.group(1), I get the intended results??With the same code as i post? RE: Regex error: 'NoneType' object has no attribute 'group' - snippsat - Oct-31-2016 Are you talking about the code i have posted or your code? Code i have posted should work for you to. You can test it online here or in >Code on top of this site. RE: Regex error: 'NoneType' object has no attribute 'group' - DBS - Oct-31-2016 (Oct-31-2016, 06:33 PM)snippsat Wrote: Are you talking about the code i have posted or your code? I got your code to work (substituting s with my variable and it worked). There was a loop sitting on top of this and when I assigned .group(1) to the variable outside the loop, everything worked fine. Thanks! |