程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用正则表达式从 CSV 中查找 id大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用正则表达式从 CSV 中查找 id?

开发过程中遇到使用正则表达式从 CSV 中查找 id的问题如何解决?下面主要结合日常开发的经验,给出你关于使用正则表达式从 CSV 中查找 id的解决方法建议,希望对你解决使用正则表达式从 CSV 中查找 id有所启发或帮助;

我得到了一个包含两列的 .csv:namedescription。对于 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]。

https://docs.python.org/3/library/re.html

大佬总结

以上是大佬教程为你收集整理的使用正则表达式从 CSV 中查找 id全部内容,希望文章能够帮你解决使用正则表达式从 CSV 中查找 id所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。