如何从字符串中删除'

时间:2014-07-12 17:09:11

标签: python

我需要删除'来自字符串(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'

3 个答案:

答案 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工作