Python : 从文件名字符串中提取邮件
Python : Extract mails from the string of filenames
我想从文件名中获取邮件。这是一组文件名示例:
string1 = "benoit.m.fontaine@outlook.fr_2022-05-11T11_59_58+00_00.pdf"
string2 = "jeane_benrand@toto.pt_test.pdf"
string3 = "rosy.gray@amazon.co.uk-fdsdfsd-saf.pdf"
我想按部分拆分文件名。第一个包含电子邮件,第二个包含其余部分。所以它应该给出 string2 :
['jeane_benrand@toto.pt', '_test.pdf']
我尝试了这个正则表达式函数,但它不适用于第二个和第三个字符串。
email = re.search(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+", string)
感谢您的帮助
鉴于您提供的样本,您可以这样做:
import re
strings = ["benoit.m.fontaine@outlook.fr_2022-05-11T11_59_58+00_00.pdf",
"jeane_benrand@toto.pt_test.pdf",
"rosy.gray@amazon.co.uk-fdsdfsd-saf.pdf"]
pattern = r'([^@]+@[\.A-Za-z]+)(.*)'
[re.findall(pattern, string)[0] for string in strings]
输出:
[('benoit.m.fontaine@outlook.fr', '_2022-05-11T11_59_58+00_00.pdf'),
('jeane_benrand@toto.pt', '_test.pdf'),
('rosy.gray@amazon.co.uk', '-fdsdfsd-saf.pdf')]
邮件模式说明([^@]+@[\.A-Za-z]+)
:
[^@]+
:除@
以外的任意字符组合
@
:在
[\.A-Za-z]+
: 字母和点的任意组合
休息模式解释(.*)
(.*)
:任意字符组合
我想从文件名中获取邮件。这是一组文件名示例:
string1 = "benoit.m.fontaine@outlook.fr_2022-05-11T11_59_58+00_00.pdf"
string2 = "jeane_benrand@toto.pt_test.pdf"
string3 = "rosy.gray@amazon.co.uk-fdsdfsd-saf.pdf"
我想按部分拆分文件名。第一个包含电子邮件,第二个包含其余部分。所以它应该给出 string2 :
['jeane_benrand@toto.pt', '_test.pdf']
我尝试了这个正则表达式函数,但它不适用于第二个和第三个字符串。
email = re.search(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+", string)
感谢您的帮助
鉴于您提供的样本,您可以这样做:
import re
strings = ["benoit.m.fontaine@outlook.fr_2022-05-11T11_59_58+00_00.pdf",
"jeane_benrand@toto.pt_test.pdf",
"rosy.gray@amazon.co.uk-fdsdfsd-saf.pdf"]
pattern = r'([^@]+@[\.A-Za-z]+)(.*)'
[re.findall(pattern, string)[0] for string in strings]
输出:
[('benoit.m.fontaine@outlook.fr', '_2022-05-11T11_59_58+00_00.pdf'),
('jeane_benrand@toto.pt', '_test.pdf'),
('rosy.gray@amazon.co.uk', '-fdsdfsd-saf.pdf')]
邮件模式说明([^@]+@[\.A-Za-z]+)
:
[^@]+
:除@
以外的任意字符组合
@
:在[\.A-Za-z]+
: 字母和点的任意组合
休息模式解释(.*)
(.*)
:任意字符组合