python - 如何匹配和替换特定单词之后的所有内容,直到它到达使用python的字符串列表中的逗号?
问题描述
我有一个带有字符串列表的 DataFrame,如下所示
df
text
,info_concern_blue,replaced_mod,replaced_rad
,info_concern,info_concern_red,replaced_unit
,replaced_link
我想替换 info_concern 之后的所有单词,例如。info_concern_blue/info_concern_red 到 info_concern,直到遇到逗号。
我尝试了以下正则表达式:
df['replaced_text'] = [re.sub(r'info_concern[^,]*.+?,', 'info_concern,',
x) for x in df['text']]
但这给了我不正确的结果。
期望的输出:
replaced_text
,info_concern,replaced_mod,replaced_rad
,info_concern,info_concern,replaced_unit
,replaced_link
请建议/建议。
解决方案
您可以使用
df['replaced_text'] = df['text'].str.replace(r'(info_concern)[^,]*', r'\1', regex=True)
请参阅正则表达式演示。
如果要确保匹配在逗号或字符串开头之后立即(?<![^,])
开始,请在模式开头添加后向:
df['replaced_text'] = df['text'].str.replace(r'(?<![^,])(info_concern)[^,]*', r'\1', regex=True)
请参阅此正则表达式演示。详情:
(?<![^,])
- 就在之前,应该有一个,
或字符串的开头(info_concern)
- 第 1 组:info_concern
字符串[^,]*
- 除逗号之外的零个或多个字符。
\1
替换用第 1 组值替换匹配项。
推荐阅读
- javascript - 在 JavaScript 间隔内等待
- sql - Postgres SQL 等效于带有 row_number 的 spark window.partition
- python - 如何让数组从从数据框对象转换的 Series 对象中工作?
- python - 如何计算具有动态日期范围的唯一值
- mongodb - 具有多个过滤器的 MongoDB UpdateMany
- python - 如何在 tkinter 中制作一个按钮,让我计算它被按下的次数?
- oracle - Java 数据库连接 (JDBC) 中的 Oracle 12c MAX 语句
- java - 未读取字符串输入
- java - 绘制箭头时出现问题。如何正确设置坐标?
- c# - 使用多包含语句提高 Entity Framework Core EF 的性能