我得到了一个.csv,它包含两列:Name
和description
。对于description
列中的每一行,我都试图找到特定的文本。它看起来像html或xml格式,我正在考虑使用Elemental Tree XML
库,但是没有缩进。每件事都是新的一行,所以我觉得使用Regex
将是最简单的方法。下面是其中一行。我把#
放进去是因为我不确定这些信息是否敏感。大约走到一半的地方有一个td
标记,其中包含一些字母和数字(F00Y009)。这是我试图获取的信息,基本上放在另一个专栏中。我没有太多使用过Regex
库,希望能得到一些帮助
到目前为止,这就是我所知道的,但我不太明白如何说“搜索以<;td>;开头的文本包含大写字母和数字,以<;/td>;结尾的文本;(忽略<;之后的“忽略”,stack不会让我做介于两者之间的事情)
import pandas
import re
col_list = ["Name", "description"]
df = pandas.read_csv(path to csv)
id = df["description"][0]
match = re.search("^<td>[A-Z0-9]</td>$", id)
print(match)
输出:
[]
“说明”列中的第一行:
<html ########>
<head>
<META ########>
<meta ########>
</head>
<body style="########">
<table style="########">
<tr style="########">
<td>########</td>
</tr>
<tr>
<td>
<########>
<tr>
<td>########</td>
<td>########</td>
</tr>
<tr bgcolor="#########">
<td>########</td>
<td>########</td>
</tr>
<tr>
<td>########</td>
<td>########</td>
</tr>
<tr bgcolor="#########">
<td>########</td>
<td>F00Y009</td>
</tr>
<tr>
<td>SHAPE</td>
<td>Point</td>
</tr>
<tr bgcolor="######">
<td>########</td>
<td>########</td>
</tr>
<tr>
<td>########</td>
<td>########</td>
</tr>
<tr bgcolor="#######">
<td>########</td>
<td>#######</td>
</tr>
<tr>
<td>########</td>
<td>{########}</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
期望输出:
<td>F00Y009</td>
你可以在这里使用正则表达式
()->;用于分组,\S+匹配非空白字符的任何字符。这与\s相反。如果使用ASCII标志,则该标志相当于[^\t\n\r\f\v]
参考:https://docs.python.org/3/library/re.html
很难说什么是匹配的,什么是不匹配的,因为(目前)关于这些问题的唯一示例是字符串
F00Y009
,并且(正如您将在下面看到的)匹配的内容很多。另外,我认为您实际上并不希望返回<td>
部分,只希望返回ID一旦你的正则表达式变得完美,试着
产出:
我认为您不需要“SHAPE”和“Point”,因此正则表达式可能需要调整,但上面的代码应该会有所帮助。如果更改
pattern
变量,只需交换分配给它的正则表达式字符串相关问题 更多 >
编程相关推荐