重复定界符并提取它们之间的字符串
Repeating delimiters and extracting the string between those
我对 Python 和正则表达式还很陌生,我想从 html 文件中提取信息。
假设以下是 html 文件中给出的一行(因为 html 没有 "see" 空格,我们的示例在同一行)
<td (some possible parameters)> EXTRACT_THIS </td> <td (some possible parameters)> ALSO_EXTRACT_THIS </td>
在我当前的代码中:
with open(myInput, 'r') as inputFile:
for line in inputFile:
line = line.strip()
if line != '':
m = re.findall('<td.*>(.*?)</td>', line)
if m:
#strip() again
print(m)
这只会打印:
['ALSO_EXTRACT_THIS']
而不是我想要的
['EXTRACT_THIS', 'ALSO_EXTRACT_THIS']
我做错了什么吗?我已经调查过了,这似乎是一种使用重复分隔符提取多个子字符串的方法。
这是因为 <td.*>
将匹配最长的字符串,即 <td (some possible parameters)> EXTRACT_THIS </td> <td (some possible parameters)>
。
您也应该对 <td>
使用非贪婪量词:
'<td.*?>(.*?)</td>'
我对 Python 和正则表达式还很陌生,我想从 html 文件中提取信息。
假设以下是 html 文件中给出的一行(因为 html 没有 "see" 空格,我们的示例在同一行)
<td (some possible parameters)> EXTRACT_THIS </td> <td (some possible parameters)> ALSO_EXTRACT_THIS </td>
在我当前的代码中:
with open(myInput, 'r') as inputFile:
for line in inputFile:
line = line.strip()
if line != '':
m = re.findall('<td.*>(.*?)</td>', line)
if m:
#strip() again
print(m)
这只会打印:
['ALSO_EXTRACT_THIS']
而不是我想要的
['EXTRACT_THIS', 'ALSO_EXTRACT_THIS']
我做错了什么吗?我已经调查过了,这似乎是一种使用重复分隔符提取多个子字符串的方法。
这是因为 <td.*>
将匹配最长的字符串,即 <td (some possible parameters)> EXTRACT_THIS </td> <td (some possible parameters)>
。
您也应该对 <td>
使用非贪婪量词:
'<td.*?>(.*?)</td>'