Phi*_*hil 1 python string split replace python-2.7
我有一个长字符串,其中包含\n,\n,\ t和\n之间的各种组合以及单词和其他字符之间的空格.
我试过''.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'
Run Code Online (Sandbox Code Playgroud)
期望的输出[new new-line = \n]:
new_str = u'Word\nword2 word3\nword4\nword5'
Run Code Online (Sandbox Code Playgroud)
使用组合str.splitlines()并在所有空格上拆分str.split():
'\n'.join([' '.join(line.split()) for line in ex_str.splitlines() if line.strip()])
Run Code Online (Sandbox Code Playgroud)
这分别对待每行,删除空行,并在折叠的所有空格每行成单个空格.
如果输入是Python 3字符串,则相同的解决方案适用于两个Python版本.
演示:
>>> ex_str = u'Word \n \t \r \n\n\n word2 word3 \r\r\r\r\nword4\n word5'
>>> '\n'.join([' '.join(line.split()) for line in ex_str.splitlines() if line.strip(' ')])
u'Word\nword2 word3\nword4\nword5'
Run Code Online (Sandbox Code Playgroud)
为了保存标签,你需要剥离和拆分的只是空间,并筛选出空字符串:
'\n'.join([' '.join([s for s in line.split(' ') if s]) for line in ex_str.splitlines() if line.strip()])
Run Code Online (Sandbox Code Playgroud)
演示:
>>> '\n'.join([' '.join([s for s in line.split(' ') if s]) for line in ex_str.splitlines() if line.strip(' ')])
u'Word\n\t\nword2 word3\nword4\nword5'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4430 次 |
| 最近记录: |