You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:如何按 特殊字符分割字符串得到指定结果?

如何正确按\r和\n分割指定字符串?

先来看你的原始字符串:

teststring = 'Index: WriteVTKOutput.FOR\r\n======================================\r\n'

你期望分割后得到:

testlist = ['Index: WriteVTKOutput.FOR', '======================================']

你尝试了teststring.split(r'\r\n')和teststring.splitlines()都没达到预期,咱们来拆解问题出在哪,以及怎么解决:

问题分析

  • 你用split(r'\r\n')的时候,r前缀把\r\n变成了字面字符串,但你的teststring里的\r\n是实际的回车换行控制字符,不是字面的\r\n,所以这个方法根本找不到匹配的分割点,自然没效果。
  • splitlines()其实是能正确分割\r\n的,但你的字符串末尾多了一个\r\n,所以它会返回['Index: WriteVTKOutput.FOR', '======================================', '']——多了一个空字符串,这就是不符合你预期的原因。

几种可行的解决方法

方法1:给splitlines()的结果过滤空串

既然splitlines()已经帮你分割好了所有行,只需要去掉空的元素就行:

testlist = [line for line in teststring.splitlines() if line]

这个列表推导式会自动忽略所有空行,刚好得到你想要的结果。

方法2:用正确的分割符+过滤/预处理

直接用实际的\r\n作为分割符,然后过滤空串(因为末尾的\r\n会分割出一个空元素):

testlist = [part for part in teststring.split('\r\n') if part]

或者先把字符串首尾的空白字符(包括末尾的\r\n)去掉,再分割:

testlist = teststring.strip().split('\r\n')

两种方式都能得到目标列表。

方法3:用正则表达式兼容更多换行格式

如果你的场景可能遇到不同的换行格式(比如单独的\n或者\r),可以用正则的re.split来处理:

import re
testlist = [part for part in re.split(r'\r?\n', teststring) if part]

这个正则会匹配\r\n或者单独的\n,同时过滤空串,适用性更强。

内容的提问来源于stack exchange,提问作者user32882

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:11:27