怎样用最pythonic的方式对字符串中的行尾进行标准化?

2024-05-14 00:10:45 发布

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

给定一个未知源的文本字符串,如何最好地重写它以获得已知的行尾约定?

我通常会:

lines = text.splitlines()
text = '\n'.join(lines)

。。。但这不能处理完全混乱的约定的“混合”文本文件(是的,它们仍然存在!)。

编辑

当然,我要做的是:

'\n'.join(text.splitlines())

。。。这不是我要问的。

之后的总行数应该是相同的,所以不能剥离空行。

测试用例

分裂

'a\nb\n\nc\nd'
'a\r\nb\r\n\r\nc\r\nd'
'a\rb\r\rc\rd'
'a\rb\n\rc\rd'
'a\rb\r\nc\nd'
'a\nb\r\nc\rd'

。。都会导致5行。在混合上下文中,splitlines假定'\r\n'是一个逻辑换行符,导致最后两个测试用例的4行。

嗯,可以通过比较splitlines()和split('\n')和/或split('\r')的结果来检测包含'\r\n'的混合上下文。。。


Tags: 字符串text文本测试用例rdsplitrclines