0

在进行一些网络抓取时,我在从字符串中删除逗号时遇到问题。我的代码如下。

import urllib

import re

htmlfile = urllib.urlopen ("http://example.com") 

htmltext = htmlfile.read ()

regex = 'Posts: (.+?)\n'

value = re.compile(regex)

posts = re.findall(value,htmltext)

print posts[0]

现在我得到的数据没问题,但问题是帖子计数随着逗号的值下降,例如 1,092,391,我想去掉逗号以留下一个数字,例如 1092391。

我已经安装了 Python 2.7.1,但我在这里没有找到任何东西,或者 Google 似乎可以正常工作。虽然我有点新手,所以我无疑在这里错过了一些如此愚蠢的东西,但我确实喜欢学习并亲自动手。所以任何帮助将不胜感激。

4

4 回答 4

2

替换它们:

posts[0].replace(',', '')

或使用该locale模块(如果您的语言环境的千位分隔符是逗号):

import locale

locale.setlocale(locale.LC_ALL, '')
n = locale.atoi(posts[0])

我建议不要只使用正则表达式进行抓取。除非Posts: (.*?)是你所追求的,否则使用像 lxml 或 BeautifulSoup 这样的 HTML 解析器来解析 HTML。

于 2013-05-07T17:07:47.053 回答
2
>>> '1,092,391'
'1,092,391'
>>> '1,092,391'.replace(',', '')
'1092391'
>>> int('1,092,391'.replace(',', ''))
1092391

我在这里找不到任何东西或谷歌似乎工作

我很难相信这一点。快速搜索“Python 字符串替换”应该可以让您非常快速地找到str.replace,更不用说在 Python 文档中搜索它可以让您更快地到达那里。我得到的“Python 逗号替换”的第一个结果甚至是一个关于 SO回答你的问题的问题。

如果一切都失败了,你可以使用你显然已经知道如何使用的正则表达式。

于 2013-05-07T17:07:59.710 回答
0

这是一个非常简单的方法..只需用,空字符串替换。

 >>> '1,092,391'.replace(',','')
 '1092391'
于 2013-05-07T17:08:10.790 回答
0
"".join('1,092,391'.split(','))
于 2013-05-07T17:10:42.700 回答