gpt4 book ai didi

python正则表达式提取用户名:password or email:password in mixed delimited csv

转载 作者:太空宇宙 更新时间:2023-11-04 02:06:53 24 4
gpt4 key购买 nike

我有(数千个)包含各种(数十亿)行的 csv 文件,例如:

组合.csv

example0@domain.tld:passw0rd
ex.a.m-pl_e1@domain.tld;p@££w0r46&
0-0-0 ex.a.m-pl_e1@domain.tld p@££w0r46&
ex.a.m-pl_e1@domain.tld:00-00-00;p@££w0r46& <-- updated line
00-00-00:username:password
username:p@££w0r46&
username p@££w0r46&
and more...

我正在尝试为我正在做的一些机器学习作业提取电子邮件或用户名和密码。但我似乎无法为此确定正确的正则表达式。

using re.split, re.findallre.search 似乎是这里的选项,我正在尝试编译一个正则表达式,可以让我简单地打印例如:

Email: "example0@domain.tld" Password: "passw0rd"
Email: "ex.a.m-pl_e1@domain.tld" Password: "p@££w0r46&"
Email: "ex.a.m-pl_e1@domain.tld" Password: "p@££w0r46&"
Email: "ex.a.m-pl_e1@domain.tld" Password: "p@££w0r46&"
Username: "username" Password: "password"
Username: "username" Password: "p@££w0r46&"
Username: "username" Password: "p@££w0r46&"

来自上面的combos.csv

我已经设法将以下内容用于电子邮件/密码组合:

re.compile(r'(?:.*[:|;])?(?P<email>[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)[:|;](?P<Password>.*)')

但提取用户名/密码我还没有成功。我试过后视;和 : 但似乎当行被分隔两次时,我当前的正则表达式将第一列作为用户名返回,接下来的两列作为密码返回:

re.compile(r'^(?:.*[:|;])?(?P<username>[A-z0-9\.\-\_\$\#\&]+)(?!@)[:|;](?P<password>.*)')

我怎样才能正确地做到这一点,更好的是,是否有一种解决方案可以让一个正则表达式完成所有事情?

欢迎任何帮助!

最佳答案

如果您计划从您可能使用的每一行中提取电子邮件、密码和可选的用户名数据

import re
rx = re.compile(r'[:; ]')
rx_email = re.compile(r'\S+@\S+\.\S+$')
with open(your_file, "r") as f:
for line in f:
fields = rx.split(line)
email = ''
id = ''
for field in fields:
if rx_email.match(field):
email = field
elif field != fields[-1]:
id = field
password = fields[-1]
print("Username: '{}', email: '{}', password: '{}'".format(id, email, password))

参见 this Python demo .

^\S+@\S+\.\S+$ 模式匹配类似电子邮件的字段,以 1+ 个非空白字符开头,然后是 @,又是 1+ 个非空白字符,`.并以 1+ 个非空白字符结尾。

[:; ]re.split 一起使用的模式用空格、;: 分割。

关于python正则表达式提取用户名:password or email:password in mixed delimited csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54516613/

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