gpt4 book ai didi

python - 如何将 _sre.SRE_Match 类型转换为字符串和整数

转载 作者:太空宇宙 更新时间:2023-11-04 10:02:53 27 4
gpt4 key购买 nike

我正在尝试在 Python 中解析正则表达式,并将解析后的字符串的值分配给 2 个变量。

例如如果我有一个字符串

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

我想将值 1 分配给名为 rank 的整数变量,并将值 [Michael, Jessica] 分配给名为 name 的数组。

当我使用 re.search() 解析并使用 .group() 函数赋值时,分配的变量类型是 _sre.SRE_Match 。你能帮我把它分别转换成整数和字符串格式吗?

最佳答案

下面一行:

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

应该替换为:

rank = re.search(r'\d+', line).group()   # (..) is not needed

获取一个字符串。

如果你想要int对象,使用int:

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

顺便说一句,使用 re.findall , 你的程序可以被简化。

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']

关于python - 如何将 _sre.SRE_Match 类型转换为字符串和整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42604800/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com