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

Python:使用竖线作为分隔符拆分字符串失效问题求助

解决竖线分隔字符串拆分无效的问题

嘿,我来帮你梳理下问题所在,以及怎么解决:

问题根源

你的代码有两个关键问题导致拆分没生效:

  1. csv.reader默认分隔符不匹配:csv.reader默认用逗号(,)作为分隔符,所以你的每行数据会被当成单个完整字符串存入row,也就是row是类似['Crimson Rosella|-35.27454538728105|...']的单元素列表。
  2. 拆分结果未赋值:x[0].split('|')确实会把字符串按竖线拆分,但这个方法是返回一个新的列表,你没有把这个结果存回原变量,所以原datas里的元素根本没变化。

解决方案一:让csv模块直接处理竖线分隔(推荐)

csv模块本身支持自定义分隔符,直接在初始化csv.reader时指定delimiter='|',这样读出来的每行就是已经拆分好的列表,不用手动split:

import os
import csv

datas = []
location = os.path.dirname(os.path.abspath(__file__))
# 拼接完整文件路径,避免找不到文件的问题
full_file_path = os.path.join(location, filename)

with open(full_file_path, newline='') as dar:
    # 指定分隔符为竖线|
    reader = csv.reader(dar, delimiter='|')
    for row in reader:
        datas.append(row)

# 现在datas里的每个元素都是拆分后的列表了
print(datas[0])
# 输出示例:['Crimson Rosella', '-35.27454538728105', '149.11596655088428', 'ACTON', '2004...']

解决方案二:手动split并保存结果

如果你坚持要自己用split处理,记得把拆分后的结果替换原元素或者存入新列表:

import os
import csv

datas = []
location = os.path.dirname(os.path.abspath(__file__))
full_file_path = os.path.join(location, filename)

with open(full_file_path, newline='') as dar:
    for row in csv.reader(dar):
        datas.append(row)

# 方法1:生成新的处理后列表
processed_datas = []
for x in datas:
    split_row = x[0].split('|')
    processed_datas.append(split_row)

# 方法2:直接修改原datas列表
# for i in range(len(datas)):
#     datas[i] = datas[i][0].split('|')

print(processed_datas[0])
# 同样得到拆分后的列表

另外补充个小细节:你的代码里filename没有和location拼接,可能会出现找不到文件的情况,用os.path.join组合路径能避免跨平台的路径问题哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:48:06