我正试图从一个页面中删除这一行:
$ 55 326
我已经制作了这个正则表达式来获取数字:
player_info['salary'] = re.compile(r'\$ \d{0,3} \d{1,3}')
当我收到文本时,我使用bs4,文本的类型为'unicode'
for a in soup_ntr.find_all('div', id='playerbox'):
player_box_text = a.get_text()
print(type(player_box_text))
我似乎无法得到结果。 我也试过像这样的正则表达式
player_info['salary'] = re.compile(ur'\$ \d{0,3} \d{1,3}')
player_info['salary'] = re.compile(ur'\$ \d{0,3} \d{1,3}', re.UNICODE)
但我无法找到获取数据。 我正在阅读的页面有这个标题:
Content-Type: text/html; charset=utf-8
希望得到一些帮助来解决这个问题。
答案 0 :(得分:3)
re.compile
与任何内容都不匹配。它只是创建了正则表达式的编译版本。
你想要这样的东西:
matchObj = re.match(r'\$ (\d{0,3}) (\d{1,3})', player_box_text)
player_info['salary'] = matchObj.group(1) + matchObj.group(2)
答案 1 :(得分:1)
这是掌握正则表达式的好网站。 http://txt2re.com/
#!/usr/bin/python
# URL that generated this code:
# http://txt2re.com/index-python.php3?s=$%2055%20326&2&1
import re
txt='$ 55 326'
re1='.*?' # Non-greedy match on filler
re2='(\\d+)' # Integer Number 1
re3='.*?' # Non-greedy match on filler
re4='(\\d+)' # Integer Number 2
rg = re.compile(re1+re2+re3+re4,re.IGNORECASE|re.DOTALL)
m = rg.search(txt)
if m:
int1=m.group(1)
int2=m.group(2)
print "("+int1+")"+"("+int2+")"+"\n"