我想做的事情如下:
temp=a.split()
#do some stuff with this new list
b=" ".join(temp)
Run Code Online (Sandbox Code Playgroud)
其中a是原始字符串,b是修改后的字符串.问题是,在执行此类方法时,新行将从新字符串中删除.那么如何在不删除换行符的情况下执行此操作呢?
我假设你的第三行是你的意思join(temp),而不是join(a).
要拆分并保留精确的"拆分器",您需要具有捕获组的re.split功能(或splitRE对象的方法):
>>> import re
>>> f='tanto va\nla gatta al lardo'
>>> re.split(r'(\s+)', f)
['tanto', ' ', 'va', '\n', 'la', ' ', 'gatta', ' ', 'al', ' ', 'lardo']
Run Code Online (Sandbox Code Playgroud)
你从中得到的碎片re.split是在索引0,2,4 ......,而奇数索引有"分隔符" - 你将用来重新加入列表的空格的确切序列(with ''.join)获得原始字符串所具有的相同空格.
您可以直接在均匀间距的项目上工作,也可以先提取它们:
>>> x = re.split(r'(\s+)', f)
>>> y = x[::2]
>>> y
['tanto', 'va', 'la', 'gatta', 'al', 'lardo']
Run Code Online (Sandbox Code Playgroud)
然后改变y你的意思,例如:
>>> y[:] = [z+z for z in y]
>>> y
['tantotanto', 'vava', 'lala', 'gattagatta', 'alal', 'lardolardo']
Run Code Online (Sandbox Code Playgroud)
然后重新插入并加入:
>>> x[::2] = y
>>> ''.join(x)
'tantotanto vava\nlala gattagatta alal lardolardo'
Run Code Online (Sandbox Code Playgroud)
请注意,根据\n需要,它恰好位于与原始位置相当的位置.
| 归档时间: |
|
| 查看次数: |
873 次 |
| 最近记录: |