我正在尝试在regex模式中添加一个变量用于research(),例如:
xvar=100
answer= re.search(r'(<a href=")(.+count=xvar.+?)(")', subreddit).group(2)
但我收到错误:
nexturl = re.search(r'(<a href=")(.+count=xvar.+?)(")', subreddit).group(2) AttributeError: 'NoneType' object has no attribute 'group'
我如何解决此问题以执行我想要的操作?
答案 0 :(得分:2)
xvar=100
answer= re.search('(<a href=")(.+count=' + str(xvar) + '.*?)(")', subreddit).group(2)
或
xvar=100
answer= re.search('(<a href=")(.+count=%s.*?)(")' % xvar, subreddit).group(2)
或
xvar=100
answer= re.search('(<a href=")(.+count={0}.*?)(")'.format(xvar), subreddit).group(2)
有关格式化字符串的详细信息,请参阅https://mkaz.com/2012/10/10/python-string-format/
答案 1 :(得分:1)
您可以使用format
,要处理异常,请使用try-except
:
xvar=100
try:
answer= re.search(r'(<a href=")(.+count={}.+?)(")'.format(xvar), subreddit).group(2)
except AttributeError:
print 'no match'
答案 2 :(得分:1)
使用字符串格式:
r'(<a href=")(.+count={}.+?)(")'.format(xvar)
答案 3 :(得分:1)
除了变量问题(您应该使用xvar
将int
string
转换为str()
),我认为问题还在于使用.+?
。如果您将其替换为.*?
,则会获得匹配,并且group(2)
可以访问。
试试这段代码:
import re
xvar=100
subreddit = r'<a href="something" count="100">Text</a>'
answer= re.search( r'(<a href=")(.+count="' + str(xvar) + r'.*?)(")', subreddit).group(2)
输出:
something" count="100
答案 4 :(得分:0)
通常,有3种方法可以做到这一点(通常称为格式化或插值):
some_string = "dogs are cute :)"
# very basic, using concatenation:
print "All " + some_string + " and go to heaven."
# Or, using the interpolate operator:
print "All %s and go to heaven." # Use %d for digits, %f for floats, %s for strings, etc. You have to be specific with the variable type.
# Or use string format:
print "All {} and go to heaven.".format(some_string)
格式被认为是“最好的”&#39;在大多数情况下练习,尽管你会在很多地方看到插值%
。查看https://docs.python.org/2/library/stdtypes.html#string-formatting