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
相关产品推荐
相关产品推荐

