gpt4 book ai didi

python - 是否可以在 python 中标记已经屏蔽的文本?

转载 作者:太空宇宙 更新时间:2023-11-03 20:34:19 25 4
gpt4 key购买 nike

我正在尝试对 NLP 文本文件进行预处理,在此过程中,我们标记了各种项目,例如日期、地址和敏感个人信息 (SPI)。问题是文本已经掩盖了其中一些信息。例如:

1 月 6 日,xxxx 或 (xxx)xxx-1234

我的问题是,是否可以在 python 中使用正则表达式来解密它们,以便我们可以继续正确地标记它们?所以我需要这样的东西:

1111 年 1 月 6 日或 (111)111-1234

将它们标记为#US_DATE和#PHONE

我尝试过简单的可能解决方案,例如:

re.sub(r'xx', '11', '(xxx)xxx-1234')
re.sub(r'xx+', '11', 'January 9 xxxx')

但都没有给我正确的模式!提前致谢。

最佳答案

也许一种选择是使用交替来匹配不同的格式,并使用带有回调的 re.sub 将所有 x 字符替换为 1。

对于我使用的模式character classesquantifiers指定您允许匹配的内容,但您可以更新它以使其更加具体。

\b[A-Za-z]{3,} [a-zA-Z\d]{1,2},? [a-zA-Z\d]{4}\b|\([a-zA-Z\d]+\)[a-zA-Z\d]{3}-[a-zA-Z\d]{4}\b

Regex demo | Python demo

例如:

import re

regex = r"\b[A-Za-z]{3,} [a-zA-Z\d]{1,2},? [a-zA-Z\d]{4}\b|\([a-zA-Z\d]+\)[a-zA-Z\d]{3}-[a-zA-Z\d]{4}\b"
test_str = ("Jan 6, xxxx or (xxx)xxx-1234\n"
"Jan 16, xxxx or (xxx)xxx-1234\n"
"January 9 xxxx\n"
"(xxx)xxx-1234")
matches = re.sub(regex, lambda x: x.group().replace('x', '1'), test_str)
print(matches)

结果

Jan 6, 1111 or (111)111-1234
Jan 16, 1111 or (111)111-1234
January 9 1111
(111)111-1234

关于python - 是否可以在 python 中标记已经屏蔽的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57275730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com