pythoninc用一个空格替换多个新行和一个新行的方法是什么?

2024-06-23 19:47:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串:

"2\nOur\nstrategy drives \nsustainably higher profits and margins\n\nStrengthening our hubs is a critical foundation to maximize profitability\n\nDriving revenue improvements from all areas of business\n\nImproving efficiency and productivity \n\nGreater accountability and transparency\n"

输出应为:

"2 Our strategy drives sustainably higher profits and margins\nStrengthening our hubs is a critical foundation to maximize profitability\nDriving revenue improvements from all areas of business\nImproving efficiency and productivity \nGreater accountability and transparency "


Tags: andtoisourfoundationmaximizehighercritical
3条回答

创建映射字典:

dct = {'\n\n': '\n', '\n': ' '}

使用re.sub(这个regex的顺序很重要):

re.sub(r'(\n\n|\n)', lambda x: dct[x.group()], s)

输出:

'2 Our strategy drives  sustainably higher profits and margins\nStrengthening our hubs is a critical foundation to maximize profitability\nDriving revenue improvements from all areas of business\nImproving efficiency and productivity \nGreater accountability and transparency '

解释一下这是怎么回事。Python的正则表达式模块不支持重叠匹配,因此当它匹配\n\n时,它也不会匹配\n,这允许您在一个步骤中完成两个替换。你知道吗

使用re.sub

import re
s = "string\n\n\nwith\n\nmultiple\n\n\nnewlines"
# Replace all multiple newlines with one newline
new_string = re.sub(r'\n+', '\n', s)

一种脓性溶液:

'\n'.join(e.replace('\n', ' ') for e in s.split('\n\n'))

首先,拆分出现'\n\n'的字符串,然后用'\n'替换列表中每个元素中的' ',最后,用'\n'连接所有内容。你知道吗

另一种解决方案

我将使用一个临时辅助字符串,它允许我临时替换双新行,然后用空格替换单新行,然后用新行替换临时辅助字符串:

假设您的字符串是s

s = "2\nOur\nstrategy drives \nsustainably higher profits and margins\n\nStrengthening our hubs is a critical foundation to maximize profitability\n\nDriving revenue improvements from all areas of business\n\nImproving efficiency and productivity \n\nGreater accountability and transparency\n"

temp = '-\t-'
s = s.replace('\n\n', temp).replace('\n', ' ').replace(temp, '\n')

相关问题 更多 >

    热门问题