在python中用一些值替换超过空白的部分

在python中用一些值替换超过空白的部分,python,Python,我想用“@”替换字符串中的多个空格。 如果有一个空格,它应该是完整的,但如果有多个连续的空格,它将保留一个并附加@。比如说 s = "Hello how are you." 将成为 "Hello how @are @@you" Python 2.7: import re s = "Hello how are you" s = re.sub("(?<= ) ", "@" ,s) print s 重新导入 s=“你好,你好吗” s=re.sub((?Python2.7: i

我想用“@”替换字符串中的多个空格。 如果有一个空格,它应该是完整的,但如果有多个连续的空格,它将保留一个并附加@。比如说

s = "Hello how  are   you."
将成为

"Hello how @are @@you"
Python 2.7:

import re
s = "Hello how  are   you"
s = re.sub("(?<= ) ", "@" ,s)

print s
重新导入
s=“你好,你好吗”
s=re.sub((?Python2.7:

import re
s = "Hello how  are   you"
s = re.sub("(?<= ) ", "@" ,s)

print s
重新导入
s=“你好,你好吗”

s=re.sub((?Edit):在查看了问题的来源后,我的答案没有修复它。我看不到源字符串中的额外空格。sg.sysel建议使用正则表达式可以很好地完成这项工作

如果您确实希望自己使用循环进行此操作:

def addats(s):
    i = 0
    r = ''
    for c in s:
        if c == ' ':
            if i > 0:
                r += '@'
            else:
                r += ' '
            i += 1
        else:
            r += c
            i = 0
    return r

请注意,对于真正的应用程序,您应该在
r
中使用一些可变的内容,例如列表,而不是字符串,但这应该可以解决您眼前的问题。

编辑:查看了问题的源代码后,我的答案没有解决问题。我看不到源字符串中的额外空格。正则表达式为sg.sysel-suggEST将很好地完成这项工作

如果您确实希望自己使用循环进行此操作:

def addats(s):
    i = 0
    r = ''
    for c in s:
        if c == ' ':
            if i > 0:
                r += '@'
            else:
                r += ' '
            i += 1
        else:
            r += c
            i = 0
    return r

请注意,对于一个实际的应用程序,您应该在
r
中使用一些可变的东西,比如列表,而不是字符串,但这应该可以解决您眼前的问题。

这是一个很好的答案,如果您对正则表达式提供一个简短的解释,这将有所改进。@asongtoruin我添加了一个解释(据我所知)@t、 m.adam我不同意-从OP的帖子的显示方式来看是这样的,但是如果你进入“编辑”,你会看到它有多个空格。非常感谢,这正是我想要的:)这是一个很好的答案,如果你对正则表达式做一个简短的解释,这将得到改进。@asongtoruin我添加了一个解释(据我所知)@t.m.adam我不同意-从OP的帖子显示的方式来看是这样的,但如果你进入“编辑”,你会看到它有多个空格。非常感谢,这正是我想要的:)