我需要删除'来自字符串(url)。
这是我的代码:
import urllib
import re
x = 0
while x <= 400:
raw = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345"
the_url = urllib.urlopen(raw)
content = the_url.readlines()
content = str(content)
num = re.findall('[0-9][0-9][0-9][0-9][0-9]', content)
num = str(num)
num = num.translate(None, "[]")
f = open("nothing.txt", "a")
f.write(str(num) )
f.close()
raw = re.sub('[0-9][0-9][0-9][0-9][0-9]', num, raw)
print raw
这就是它打印的内容:
http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing='44827'
我需要44827
而不是'44827'
答案 0 :(得分:3)
re.findall()
返回一个列表,然后将其转换为字符串。不要这样做。
您只需要一个值,因此请改用re.search()
:
num = re.search('[0-9][0-9][0-9][0-9][0-9]', content).group()
即使您 想要使用re.findall()
,您也只需要第一个值:
num = re.findall('[0-9][0-9][0-9][0-9][0-9]', content)
num = num[0]
如果您正在玩挑战,请小心并仔细观察返回值。除了盲目跟踪数字之外,还有更多的挑战。也许并非所有结果都以the next nothing is
...
您的正则表达式可以简化为:
r'\d{5}'
\d
匹配与[0-9]
相同的字符,{5}
告诉解析器完全匹配前面的模式5次。就个人而言,我不会将模式限制为精确的位数;您可以使用+
代替匹配至少一个数字:
r'\d+'
答案 1 :(得分:0)
您可以使用.replace()
替换所有单引号:
>>> s="http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing='44827'"
>>> s = s.replace("'", '')
>>> s
'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=44827'
>>>
答案 2 :(得分:0)
你有多个选项,最简单的是str.replace。你也可以浏览一行中的每个字符,如果它'不要将它添加到新行,否则添加它。你也可以做一些花哨的事情来让str.rstrip工作