繁体   English   中英

如何用特定字符替换 python 字符串中的字符串?

[英]How to replace string in python string with specific character?

例如,我在 python 的数据框中有一列名为Children

少数名字是[ tom (peter), lily, fread, gregson (jaeson 123)]等。

我想问我应该写什么代码,可以删除每个名字的一部分,例如'('等等。所以从我给定的名字示例 tom(peter) 将成为我的专栏中的 tom 和 gregson (123 ) 将变为 gregson。由于有数千个名称带有括号部分,我想删除从括号“(”开始并以括号“)”结尾的字符串部分。这是一个包含许多列的数据框,但我想做此编辑在我名为 DF 的 dataframe 中名为 CHILDREN 的特定列中进行。

正如@Ruslan S.所建议的那样,您可以使用pandas.Series.str.replace或者您也可以使用re.sub (还有其他方法):

import pandas as pd
df = pd.DataFrame({"name":["tom (peter)" , "lily", "fread", "gregson (jaeson 123)"]})
# OPTION 1 with str.replace :
df["name"] = df["name"].str.replace(r"\([a-zA-Z0-9\s]+\)", "").str.strip()
# OPTION 2 :with re sub
import re
r = re.compile(r"\([a-zA-Z0-9\s]+\)")
df["name"] = df["name"].apply(lambda x: r.sub("", x).strip())

两种情况的结果:

      name
0      tom
1     lily
2    fread
3  gregson

请注意,我还使用 strip 在这里删除前导和尾随空格。 有关要使用的正则表达式的更多信息,请参见re doc

你可以试试:

#to remove text between () 
df['columnname'] = df['columnname'].str.replace(r'\((.*)\)', '')
#to remove text between %%
df['columnname'] = df['columnname'].str.replace(r'%(.*)%', '')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM