python - Python - 从逆向获取特定字符后的字符串
问题描述
我正在尝试捕获这些电子邮件列表的域。我在电子邮件中有子域并试图将其删除。我只需要在 '.' 之前和之后的字符串。从后面
ids = [1,2,3,4,5,6,7,8]
emails = ['gmail.com','aol.com','','123.abc.edu','123.er.abc.edu','','abc.gov','test.net']
df = pd.DataFrame({'ids':ids,'emails':emails})
df
ids emails
0 1 gmail.com
1 2 aol.com
2 3
3 4 123.abc.edu
4 5 123.er.abc.edu
5 6
6 7 abc.gov
7 8 test.net
试过这个和 -1、2:...等的组合
df.emails.str.split(".", 1).str[-1]
0 com
1 com
2
3 abc.edu
4 er.abc.edu
5
6 gov
7 net
需要这样的输出
ids emails
0 1 gmail.com
1 2 aol.com
2 3
3 4 abc.edu
4 5 abc.edu
5 6
6 7 abc.gov
7 8 test.net
解决方案
通过1
作为第二个参数传递给split()
您将拆分限制为一个。
改用:
df.emails.str.split(".").str[-2:]
获取拆分字符串的最后两段:
0 [gmail, com]
1 [aol, com]
2 []
3 [abc, edu]
4 [abc, edu]
5 []
6 [abc, gov]
7 [test, net]
要将输出作为包含点的字符串,请链接一个方法来连接先前的输出:
In []: df.emails.str.split(".").str[-2:].str.join(".")
Out[]:
0 gmail.com
1 aol.com
2
3 abc.edu
4 abc.edu
5
6 abc.gov
7 test.net
Name: emails, dtype: object
推荐阅读
- flutter - Flutter 在播放视频的同时录制前置摄像头
- android - Firebase 身份验证 - 电话 - “INVALID_CERT_HASH”
- typescript - 使用 grpc ts 工具将 proto 转换为 ts 文件
- python - 如何在 Pygame 中正确使用 colliderect?
- r - 从 R 中的 socrata 读取过滤后的数据
- javascript - HTML - 检查日期/时间,但仅在工作时间刷新页面
- c# - 使用 restclient 无法连接到远程服务器”,这适用于本地计算机,但不适用于 Azure 应用服务
- python - 标签 kivy 不以列表形式显示文本
- php - cron 作业中忽略的输出
- ruby-on-rails - 没有参数的范围,带有洗劫形式