V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cirton
V2EX  ›  Java

读取 txt 文本,列中的分隔符要如何处理?

  •  
  •   cirton · 2019-04-28 17:00:51 +08:00 · 2758 次点击
    这是一个创建于 2068 天前的主题,其中的信息可能已经有所发展或是发生改变。

    读取文本:

    9.78043902348e+12,Suzanne Collins,2008.0,The Hunger Games,"The Hunger Games (The Hunger Games, #1)",eng,4.34,4780653

    分隔符是逗号,但是列中如 "The Hunger Games (The Hunger Games, #1)" 包含了逗号,这要如何处理? 使用正则可以吗?

    6 条回复    2019-04-29 00:49:39 +08:00
    kyuuseiryuu
        1
    kyuuseiryuu  
       2019-04-28 17:11:53 +08:00
    写 parser,引号方括号圆括号之类的结对出现的字符优先匹配,没有匹配上的话之后逗号都视为普通字符不匹配。
    my3157
        2
    my3157  
       2019-04-28 17:15:11 +08:00
    如果不特别 care 性能, 建议正则
    lululau
        3
    lululau  
       2019-04-28 17:30:42 +08:00
    这不是 CSV 吗,人家已经把包含分隔符的字段引起来了啊
    annielong
        4
    annielong  
       2019-04-28 17:34:37 +08:00
    就如 csv 大文件导入时候文本包含引号的问题一样
    gaolycn
        5
    gaolycn  
       2019-04-28 23:40:57 +08:00 via Android
    请使用 csv parser,不用当作纯文本自己处理
    autogen
        6
    autogen  
       2019-04-29 00:49:39 +08:00
    我还见过这样的代码。。。。

    if cols.length == 9:
    fullname = cols[4] +',' + cols[5]
    cols.pop(5)
    else:
    fullname = cols[4]



    -
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2547 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:46 · PVG 23:46 · LAX 07:46 · JFK 10:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.