python - 如何使用正则表达式在Python中删除模式之前和之后的空格?

标签 python regex

问题: 我有一个字符串列表,我需要删除看起来像 'digit/digital' 的子字符串之前和之后的空格。被困在这个问题上有一段时间了,仍然不明白如何解决它,我将不胜感激任何帮助。

示例输入:

steps = [
'mix butter , flour , 1 / 3 c',
'sugar and 1-1 / 4 t',
'vanilla'
]

预期输出:

[
'mixbutter,flour,1 / 3c',
'sugarand1-1 / 4t',
'vanilla'
]

我的方法:

steps_new = []
for step in steps:
    step = re.sub(r'\s+[^\d+\s/\s\d+]','',step)
    steps_new.append(step)
steps_new

我的输出:

[
'mixutterlour 1 / 3',
'sugarnd 1-1 / 4',
'vanilla'
]

最佳答案

你可以使用

import re
steps = ['mix butter , flour , 1 / 3 c', 'sugar and 1-1 / 4 t', 'vanilla']
steps_new = [re.sub(r'(\d+\s*/\s*\d+)|\s+', lambda x: x.group(1) or "", x) for x in steps]
print(steps_new) # => ['mixbutter,flour,1 / 3c', 'sugarand1-1 / 4t', 'vanilla']

请参阅Python demo online .

(\d+\s*/\s*\d+)|\s+ regex匹配并捕获到第 1 组数字序列 + 零个或多个空格 +/+ 零个或多个空格 + 数字(使用 (\d+\s*/\s*\d+)),或 (|) 仅匹配一个或多个空格 (\s+)。

如果第 1 组参加了比赛,则替换为空字符串。否则,替换为组 1 值,即不发生替换。

关于python - 如何使用正则表达式在Python中删除模式之前和之后的空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74131150/

相关文章:

python - 如何找到整个测试套件在Pytest中完成所需的时间

python - 如何包装 python 字典?

python - PyQt 重新启动 shell

ruby - 在 Ruby 正则表达式中使用 ^ 字符向后看

python - 在字符串末尾增加一个数字

javascript - 正则表达式获取两个字符之间的文本?

java - 正则表达式捕获包含太多内容

python - 读取具有键值对的文本文件,并使用 python pandas 将每一行转换为一个字典

python - 生成多个 Pandas 数据框

mysql - 是否可以循环遍历 MySQL SELECT 中的逗号分隔列表?