如何通过替换特定字符和 on/forward 来使用 str.replace
How to use str.replace by replacing from a specific character and on/forward
- 这是我要清理的 table 的摘录。
- 我尝试过的事情:
df_sb['SB'] = df_sb['SB'].str.replace('-R*', '', df_sb['SB'].shape[0])
- 我预料到了这一点(没有 -Rxx):
- 但我有这个(只有破折号[-]和替换的字符“R”):
你能帮我从项目 4 中得到想要的结果吗?
使用str.partition()
的示例:
s = ['A330-22-3123-R-01','A330-22-3123-R-02']
for e in s:
print(e.partition('-R')[0])
输出:
A330-22-3123
A330-22-3123
编辑:
未测试,但在您的情况下:
df_sb['SB'] = df_sb['SB'].str.partition('-R')[0]
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”,请从正则表达式中删除“$”。
- 这是我要清理的 table 的摘录。
- 我尝试过的事情:
df_sb['SB'] = df_sb['SB'].str.replace('-R*', '', df_sb['SB'].shape[0])
- 我预料到了这一点(没有 -Rxx):
- 但我有这个(只有破折号[-]和替换的字符“R”):
你能帮我从项目 4 中得到想要的结果吗?
使用str.partition()
的示例:
s = ['A330-22-3123-R-01','A330-22-3123-R-02']
for e in s:
print(e.partition('-R')[0])
输出:
A330-22-3123
A330-22-3123
编辑:
未测试,但在您的情况下:
df_sb['SB'] = df_sb['SB'].str.partition('-R')[0]
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”,请从正则表达式中删除“$”。