2024-09-10 15:17:30 发布
网友
我试图用Python解析正则表达式,并将解析后的字符串的值赋给2个变量。在
例如,如果我有一个字符串
<tr align="right"><td>1</td><td>Michael</td><td>Jessica</td>
我想将值1赋给一个名为rank的整数变量,将values[Michael,Jessica]赋给一个名为name的数组。在
当使用cd1}赋值函数时,{parse}_sre.sre_匹配. 你能帮我把它分别转换成整数和字符串格式吗。在
你可以试试这个:
<td>(\w+)<\/td>
Demo
然后遍历匹配项并分配给数组或变量。。。在
示例代码(Run it here):
以下行:
rank = re.search('(\d)+', line)
应替换为:
得到一根绳子。在
如果您想要int对象,请使用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']
你可以试试这个:
Demo
然后遍历匹配项并分配给数组或变量。。。在
示例代码(Run it here):
^{pr2}$以下行:
应替换为:
^{pr2}$得到一根绳子。在
如果您想要
int
对象,请使用int
:顺便说一句,使用^{} ,你的程序可以简化。在
或者,在解析HTML时,最好使用BeatufiulSoup、lxml等库,而不是使用正则表达式。在
相关问题 更多 >
编程相关推荐