python - 如何通过从特定字符替换并打开/转发来使用 str.replace
问题描述
- 这是我要清理的表的摘录。
- 我试图做的事情:
df_sb['SB'] = df_sb['SB'].str.replace('-R*', '', df_sb['SB'].shape[0])
- 我期望这个(没有-Rxx):
- 但我有这个(只有破折号[-]和字符“R”被替换):
你能帮我从第 4 项中得到想要的结果吗?
解决方案
str.replace
在这里工作,你只需要使用正则表达式。所以你原来的答案非常接近!
df = pd.DataFrame({"EO": ["A33X-22EO-06690"] * 2, "SB": ["A330-22-3123-R01", "A330-22-3123-R02"]})
print(df)
EO SB
0 A33X-22EO-06690 A330-22-3123-R01
1 A33X-22EO-06690 A330-22-3123-R02
df["new_SB"] = df["SB"].str.replace(r"-R\d+$", "")
print(df)
EO SB new_SB
0 A33X-22EO-06690 A330-22-3123-R01 A330-22-3123
1 A33X-22EO-06690 A330-22-3123-R02 A330-22-3123
正则表达式的含义:
r"-R\d+$"
意味着在字符串中找到我们看到的字符“-R”后跟 1 个或多个数字 (\d+) 的任何位置。然后我们将其限制为仅在该模式出现在字符串的最末尾时才有效。这样我们就不会意外替换恰好在 SB 字符串中间出现的 -R(digits)(例如,我们不会删除中间的“-R101”:“A330-22-R101- R20”。我们只会删除“-R20”)。如果您确实想同时删除“-R101”和“-R20”,请从正则表达式中删除“$”。
推荐阅读
- selenium-webdriver - Chrome Driver Selenium Python 甚至不会点击工作日网站中的框
- postgresql - 如何从其他网络远程连接到 PostgreSQL 数据库?
- podman - podman run --expose 有什么作用?
- amazon-cloudwatch - 如何在 Cloudwatch 中屏蔽 AWS SNS SMS 传递状态日志中的数据
- node.js - 为什么从前一个请求中获取的数据会显示在后续请求中?
- flutter - 有什么方法可以更改图像选择器的文件名?
- c - 当一个程序同时包含套接字服务器和客户端时,我们应该注意什么?
- react-native - 使用 mobx 或 redux 还是使用存储库模式和持久本地存储领域或 sqlite?
- android - 'onRequestPermissionsResult' 不覆盖任何内容
- winapi - winapi中STR的数据类型是什么?