Posts: 22
Threads: 9
Joined: Oct 2016
Oct-31-2016, 06:22 AM
(This post was last modified: Oct-31-2016, 05:41 PM by DBS.)
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)
Posts: 2,953
Threads: 48
Joined: Sep 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('**')
Posts: 7,320
Threads: 123
Joined: Sep 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'
Posts: 3,458
Threads: 101
Joined: Sep 2016
If there is no match, re.search returns None. So check to make sure there are groups, before trying to get the group.
Posts: 22
Threads: 9
Joined: Oct 2016
Oct-31-2016, 05:31 PM
(This post was last modified: Oct-31-2016, 05:49 PM by snippsat.)
(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?
Posts: 7,320
Threads: 123
Joined: Sep 2016
Oct-31-2016, 05:54 PM
(This post was last modified: Oct-31-2016, 05:54 PM by snippsat.)
(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
Posts: 22
Threads: 9
Joined: Oct 2016
(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??
Posts: 7,320
Threads: 123
Joined: Sep 2016
Oct-31-2016, 06:35 PM
(This post was last modified: Oct-31-2016, 06:35 PM by snippsat.)
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.
Posts: 22
Threads: 9
Joined: Oct 2016
(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!
|