2011-05-18 120 views
3

我想使用正则表达式从多行字符串中删除所有空格字符。 我所寻找的是这样的:删除/替换多行字符串中的所有空格,除了换行符

exp = re.compile("\s-[\r\n]") 
exp.sub('', text) 

是否有做上述正则表达式。由于text是unicode,除了[\t\v\f \r\n]之外,其他字符可能形成\s类,所以我不能使用[\t\v\f ]

+0

顺便说一句 - 我不知道Python的个人,但你不应该使用['re.U'] (http://docs.python.org/library/re.html#re.U)? – Kobi 2011-05-18 10:26:52

+0

关于're.U',我以为python在输入文本是unicode时会自动使用它。现在我所有的数据都是英文的,所以我不知道除了上述以外是否还有其他空格字符。我刚刚从python文档中找到'\ s'中的字符列表。当我想到unicode问题时,我真的想用我提到的正则表达式'[\ t \ v \ f]'来满足我的需求。如果您知道除了上述之外的任何Unicode空白字符,请让我知道,并且我将检查是否需要使用're.U'。 – compbugs 2011-05-18 15:44:17

回答

7

试试这个双重否定字符类:

[^\S\r\n] 

例子:http://rubular.com/r/t2Ahjs9UzF

+0

“双重否定性”,你刚刚做出了一个,对吧?! :) – 2011-05-18 10:03:15

+0

@Bart - 我想是的!谢谢':)' – Kobi 2011-05-18 10:05:13

+0

感谢@Kobi它的工作! – compbugs 2011-05-18 15:58:05