如何转换_sre.sre_匹配类型转换为字符串和整数

2024-09-10 15:17:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Python解析正则表达式,并将解析后的字符串的值赋给2个变量。在

例如,如果我有一个字符串

<tr align="right"><td>1</td><td>Michael</td><td>Jessica</td>

我想将值1赋给一个名为rank的整数变量,将values[Michael,Jessica]赋给一个名为name的数组。在

当使用cd1}赋值函数时,{parse}_sre.sre_匹配. 你能帮我把它分别转换成整数和字符串格式吗。在


Tags: 字符串nameright整数数组trtdvalues
2条回答

你可以试试这个:

<td>(\w+)<\/td>

Demo

然后遍历匹配项并分配给数组或变量。。。在

示例代码(Run it here):

^{pr2}$

以下行:

rank = re.search('(\d)+', line)

应替换为:

^{pr2}$

得到一根绳子。在

如果您想要int对象,请使用int

rank = int(re.search(r'\d+', line).group())

顺便说一句,使用^{},你的程序可以简化。在

import re

def extract_rankname(line):
    groups = re.findall('<td>(.*?)</td>', line)
    try:
        rank = groups[0]   # int(groups[0])
        return {rank: groups[1:]}
    except ValueError:
        return {}  # return None

extract_rankname('<tr align="right"><td>1</td><td>Michael</td><td>Jessica</td>')
# => {'1': ['Michael', 'Jessica']}

或者,在解析HTML时,最好使用BeatufiulSoup、lxml等库,而不是使用正则表达式。在

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<tr align="right"><td>1</td><td>Michael</td><td>Jessica</td>', 'lxml')
>>> [td.text for td in soup.find_all('td')]
[u'1', u'Michael', u'Jessica']
>>> tds = [td.text for td in soup.find_all('td')]
>>> tds[0], tds[1:]
(u'1', [u'Michael', u'Jessica'])
>>> print(tds[0])  # rank
1
>>> tds[1:]  # names
[u'Michael', u'Jessica']

相关问题 更多 >