大佬教程收集整理的这篇文章主要介绍了使用正则表达式从 CSV 中查找 id,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我得到了一个包含两列的 .csv:name
和 description
。对于 description
列中的每一行,我都在尝试查找特定文本。它看起来像 HTML 或 xml 格式,我正在考虑使用 Elemental Tree XML
库,但没有缩进。一切都是新的一行,所以我觉得使用 Regex
将是最简单的方法。下面是其中一排。我输入 #
是因为我不确定该信息是否敏感。大约一半的位置有一个 td
标签,其中包含一些字母和数字 (F00Y009)。这是我试图获取并基本上放在另一列中的信息。我没有经常使用 Regex
库,希望得到一些帮助。
这是我到目前为止所拥有的,但我不太明白如何说“搜索以 开头的文本包含大写字母和数字并以 结尾(忽略 中间的东西)。
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>
很难说你匹配什么以及你不应该匹配什么,因为问题中唯一的例子(目前)是字符串 F00Y009
并且它(正如你将在下面看到的)匹配各种各样的东西。此外,我实际上并不认为您想要返回 <td>
部分 - 只是 ID。
一旦您完善了正则表达式,请尝试...
import pandas as pd
import re
pattern = r'<td>(\w+)</td>'
df = pd.read_csv(r'test_data.csv',encoding='utf-8-sig')
def find_ids(row):
ids = re.findall(pattern,row)
return ids
df['ID'] = [find_ids(row) for row in df['Description']]
df.head()
输出:
Name Description ID
0 Janet <html ########>\n\n<head>\n\n<META ########>\n... [F00Y009,SHAPE,Point]
1 John <html ########>\n\n<head>\n\n<META ########>\n... [F00Y009,Point]
2 Burt <html ########>\n\n<head>\n\n<META ########>\n... [F00Y009,Point]
3 Bob <html ########>\n\n<head>\n\n<META ########>\n... [F00Y009,Point]
我认为您不需要“SHAPE”和“Point”,因此正则表达式可能需要调整,但上面的代码应该会有所帮助。如果更改,只需交换分配给 pattern
变量的正则表达式字符串。
你可以在这里使用正则表达式
import re
re.findall(r"<td>(\S+)</td>",open('filename.csv').read())
() -> 用于分组和 \S+ 匹配任何不是空白字符的字符。这与\s 相反。如果使用 ASCII 标志,则这相当于 [^ \t\n\r\f\v]。
以上是大佬教程为你收集整理的使用正则表达式从 CSV 中查找 id全部内容,希望文章能够帮你解决使用正则表达式从 CSV 中查找 id所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。