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

Python中如何提取' | '分隔的多段字符串并去除空格/制表符?

解决方案:提取并清理分隔字段

嗨,我来帮你搞定这个问题!你的需求是把用|分隔的字符串拆分成独立字段,同时去掉每个字段前后的空格、制表符对吧?之前的正则没生效是因为它的逻辑完全不对,我给你两种靠谱的解决思路:

首先先解释下你之前的问题:\|(^\|)*\|这个表达式的逻辑是匹配一个|,然后尝试匹配零个或多个行首位置的|(^是行起始锚点,在这里完全用错了场景),根本没办法定位到各个字段的内容,所以自然提取不到有效信息。


方法1:字符串分割+清理(推荐,可读性更高)

这种方法更直观,先按|把字符串拆分成列表,再逐个清理每个元素的前后空白:

以Python为例:

input_str = "2 | 848 | Seconds | 660.00 | 900.00 | OK"
# 按|分割,再对每个元素去除前后空白(空格、制表符都包含在内)
fields = [part.strip() for part in input_str.split('|')]
print(fields)
# 输出:['2', '848', 'Seconds', '660.00', '900.00', 'OK']

几乎所有主流语言都有类似的split和strip(或trim)方法,比如JavaScript里可以这么写:

const inputStr = "2 | 848 | Seconds | 660.00 | 900.00 | OK";
const fields = inputStr.split('|').map(part => part.trim());
console.log(fields);

方法2:正则表达式提取

如果你更倾向用正则,可以用这个表达式来匹配所有被|分隔的字段,自动跳过前后的空白:

正则表达式:\s*([^|]+?)\s*
解释:

  • \s*:匹配零个或多个空白字符(空格、制表符等)
  • ([^|]+?):捕获组,匹配除了|之外的任意字符(非贪婪模式,避免过度匹配)
  • 整个表达式会遍历字符串,把每个被|分隔的字段内容提取出来

Python示例:

import re
input_str = "2 | 848 | Seconds | 660.00 | 900.00 | OK"
fields = re.findall(r'\s*([^|]+?)\s*', input_str)
print(fields)
# 输出同样是:['2', '848', 'Seconds', '660.00', '900.00', 'OK']

两种方法都能完美实现你的需求,个人更推荐方法1,因为代码更易读,也不需要纠结正则的细节~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:19:39