【发布时间】:2013-07-22 11:01:55
【问题描述】:
我有一个长字符串,其中包含 \n、\r、\t 以及单词和其他字符之间的空格的各种组合。
- 我想将所有多个空格缩减为一个空格。
- 我想将所有 \n、\r、\t 组合减少为单个换行符。
- 我也想将所有 \n、\r、\t 和空格组合减少为单个换行符。
我以各种方式尝试了''.join(str.split()),但均未成功。
这里正确的 Pythonic 方式是什么?
Python 3.x 的解决方案会有所不同吗?
例如。字符串:
ex_str = u'Word \n \t \r \n\n\n word2 word3 \r\r\r\r\nword4\n word5'
所需的输出 [new new-line = \n]:
new_str = u'Word\nword2 word3\nword4\nword5'
【问题讨论】:
-
不要命名变量
str;它掩盖了内置类型。 -
“我也想将所有 \n、\r、\t 和空格组合减少为一个换行符。” 连续计算两个空格作为“\n、\r、\t 和空格组合”?如果是,你如何决定何时使用这条规则,何时使用第一条规则?
-
@Kevin,在单词之间,我有任何东西,从单个 \n、单个 \t、单个 \r、单个空格到任何(或相同)的 1、2、3 或全部 4其中。如果任何组合有一个或多个新行,我希望它是一个新行。如果它只有空格(一个或多个),我希望它是一个空格。
-
@MartijnPieters,我替换了示例字符串名称。谢谢。
-
你需要澄清你在换行规则中包含
\t。word1\t\tword2应该是word1 word2还是word1\nword2?
标签: python string python-2.7 replace split