Irv*_*van 1 python string whitespace
假设我有一个功能
def f(a):
return a[::-1]
Run Code Online (Sandbox Code Playgroud)
我想将函数f应用于字符串上的每个单词.如果字符串只包含空格,我可以这样做
>>> s = ' this is a banana '
>>> ' '.join(map(f, s.split(' ')))
' siht si a ananab '
Run Code Online (Sandbox Code Playgroud)
但是当字符串由多种类型的空格组成时,我该怎么做呢?(例如,\ t和\n)
例如,我想改变
'\t \t this is a\tbanana \n'
Run Code Online (Sandbox Code Playgroud)
至
'\t \t siht si a\tananab \n'
Run Code Online (Sandbox Code Playgroud)
使用正则表达式,该re.sub()函数接受一个函数来进行替换.匹配非空格:
re.sub(r'[^\s]+', lambda m: f(m.group(0)), s)
Run Code Online (Sandbox Code Playgroud)
该函数传递一个匹配对象 ; 使用.group(0)您可以提取匹配的文本以将其传递给您的函数.返回值用于替换输出字符串中的原始匹配文本.
演示:
>>> import re
>>> def f(a):
... return a[::-1]
...
>>> s = '\t \t this is a\tbanana \n'
>>> re.sub(r'[^\s]+', lambda m: f(m.group(0)), s)
'\t \t siht si a\tananab \n'
Run Code Online (Sandbox Code Playgroud)