有没有办法用下划线(或任何其他符号)替换字符串中的单个空格?

时间:2019-05-15 04:26:09

标签: python python-3.x

我可以编写一个def函数来完成此任务。但是,我想知道是否可以通过任何方式像string.replace('a',' ')

那样执行此任务
input  = "This   is a   regular text"

output = "This   is_a   regular_text"

2 个答案:

答案 0 :(得分:5)

使用正则表达式匹配单词之间的单个空格并将其替换为下划线:

import re

inp  = "This   is a   regular text"
print(re.sub(r'(?<! ) (?! )', '_', inp))

# This   is_a   regular_text

答案 1 :(得分:1)

我对您的问题的看法是,您想在带偶数的单词之间插入下划线而不是空格。这意味着第二个和第四个空格将被下划线替换。

我们可以尝试在(\s+)上分割输入字符串,这将保留文本和空格。然后,迭代结果列表并为偶数空格插入下划线。

input = "This   is a   regular text"
parts = re.split(r'(\s+)', input)
output = ""

for i in range(0, len(parts)):
    if (i+1) % 4 == 0:
        output = output + "_"
    else:
        output = output + parts[i]

print(output)

这将输出:

This   is_a   regular_text