【发布时间】:2021-09-13 15:37:28
【问题描述】:
我需要为带有逗号的单个字符串删除一个特殊字符集(例如 (x))。
这是一个目标示例:
| col1 | col2 |
|---|---|
| Brash (7), Confident (7), Street-Smart (6), Calm/Peaceful(5) | Brash, Confident, Street-Smart, Calm/Peaceful |
我尝试过使用以下代码:
df['col'] = df['col'].fillna('').astype(str).str.replace(r'[^A-Za-z ]', '', regex=True)
df['col'] = df['col'].str.replace(r" \(.*\)","")
但我只能保留第一个元素或删除所有特殊字符,我只需要删除模式(x)
【问题讨论】:
-
您的代码
df['col'] = df['col2'].str.replace(r" \(.*\)","")对我来说很好用。 -
“行的元素”是什么意思? 单个单元格中是否有
Brash (7), Confident (7), Street-Smart (6), Calm/Peaceful(5)?那是一个带有逗号的字符串,还是一个字符串列表,还是什么? -
使用
r" \(.*?\)"作为正则表达式 -
@KarlKnechtel,是一个带有逗号的字符串。对不起,可疑的表达
-
啊哈。那么问题很简单,例如
\(.*\)匹配(7), Confident (7), Street-Smart (6), Calm/Peaceful(5)- 尽可能满足条件。有关详细信息,请参阅链接的副本。您接受的答案通过仅接受括号内的数字来解决问题。