Python Forum
Regex error: 'NoneType' object has no attribute 'group'
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Regex error: 'NoneType' object has no attribute 'group'
#1
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)
Reply
#2
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('**')
"As they say in Mexico 'dosvidaniya'. That makes two vidaniyas."
https://freedns.afraid.org
Reply
#3
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'
Reply
#4
If there is no match, re.search returns None. So check to make sure there are groups, before trying to get the group.
Reply
#5
(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!
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.

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?
Reply
#6
(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)
Output:
string1;string2;string3 string1;string2;string3
Reply
#7
(Oct-31-2016, 05:54 PM)snippsat Wrote:
(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)
Output:
string1;string2;string3 string1;string2;string3
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??
Reply
#8
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.
Reply
#9
(Oct-31-2016, 06:33 PM)snippsat Wrote: 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 paste in >Code on top of this site.

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!
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
Bug TypeError: 'NoneType' object is not subscriptable TheLummen 4 678 Nov-27-2023, 11:34 AM
Last Post: TheLummen
  Error: audioio has no attribute 'AudioOut' netwrok 3 592 Oct-22-2023, 05:53 PM
Last Post: netwrok
  TypeError: 'NoneType' object is not callable akbarza 4 917 Aug-24-2023, 05:14 PM
Last Post: snippsat
  AttributeError: '_tkinter.tkapp' object has no attribute 'username' Konstantin23 4 1,528 Aug-04-2023, 12:41 PM
Last Post: Konstantin23
  Need help with 'str' object is not callable error. Fare 4 775 Jul-23-2023, 02:25 PM
Last Post: Fare
  Python: Regex is not good for re.search (AttributeError: 'NoneType' object has no att Melcu54 9 1,383 Jun-28-2023, 11:13 AM
Last Post: Melcu54
  Python: AttributeError: 'PageObject' object has no attribute 'extract_images' Melcu54 2 3,660 Jun-18-2023, 07:47 PM
Last Post: Melcu54
  Object attribute behavior different in 2 scripts db042190 1 685 Jun-14-2023, 12:37 PM
Last Post: deanhystad
  cx_oracle Error - AttributeError: 'function' object has no attribute 'cursor' birajdarmm 1 2,210 Apr-15-2023, 05:17 PM
Last Post: deanhystad
  Pandas AttributeError: 'DataFrame' object has no attribute 'concat' Sameer33 5 5,297 Feb-17-2023, 06:01 PM
Last Post: Sameer33

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020