【发布时间】:2018-10-15 15:03:57
【问题描述】:
我正在尝试格式化此字符串,但不包括以下字符:( )
My_name (1)
Your_name (2)
期望的输出:
My_name_ID_1
Your_name_ID_2
这是我的数据框的一列。我尝试一次只替换一个字符,我也想在之后加入。
我可以加入并替换这两个字符吗?
【问题讨论】:
标签: python string pandas dataframe join
我正在尝试格式化此字符串,但不包括以下字符:( )
My_name (1)
Your_name (2)
期望的输出:
My_name_ID_1
Your_name_ID_2
这是我的数据框的一列。我尝试一次只替换一个字符,我也想在之后加入。
我可以加入并替换这两个字符吗?
【问题讨论】:
标签: python string pandas dataframe join
你也可以使用:
s.str.replace(r"\(.*\)","").str.strip()+"_ID_"+s.str.replace(r'[^(]*\(|\)[^)]*', '')
但是,@user3483203 的答案更好。 :)
【讨论】:
您可以使用带有str.replace 的正则表达式:
s.str.replace(r'(\w+)\s+\(([^\)])\)', r'\1_ID_\2')
0 My_name_ID_1
1 Your_name_ID_2
Name: 0, dtype: object
另一种选择是:
s.str.replace(r'\s+\(([^\)])\)', r'_ID_\1')
如果你不想那么明确。
正则表达式解释
( # matching group 1
\w+ # matches any word character
)
\s+ # matches one or more spaces
\( # matches the character (
( # matching group 2
[^\)] # matches any character that IS NOT )
)
\) # matches the character )
【讨论】: