V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jakeyfly
V2EX  ›  问与答

Python 里有什么办法让字符串的转成数组呢 如下

  •  
  •   jakeyfly · 2018-02-20 17:10:26 +08:00 · 4936 次点击
    这是一个创建于 2495 天前的主题,其中的信息可能已经有所发展或是发生改变。

    '[1,2,3,4,]' 怎么把他变成数组啊 [1,2,3,4]

    想了好久 T T

    17 条回复    2018-02-22 00:28:44 +08:00
    tomczhen
        1
    tomczhen  
       2018-02-20 17:16:06 +08:00
    Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.
    lhx2008
        2
    lhx2008  
       2018-02-20 17:16:35 +08:00 via Android
    json 解析
    snal123
        3
    snal123  
       2018-02-20 17:17:27 +08:00 via iPhone
    split 然后 join
    benzzz
        4
    benzzz  
       2018-02-20 17:17:31 +08:00 via iPhone
    albertofwb
        5
    albertofwb  
       2018-02-20 17:20:19 +08:00 via Android
    srlp
        6
    srlp  
       2018-02-20 17:24:55 +08:00
    如果是 [1,2,3,4] (没有最后一个逗号)的话可以直接 json.loads()

    纯数字的话,可以 import re 然后

    re.findall(r'\d+', '[1,2,3,4,]')
    tux
        7
    tux  
       2018-02-20 17:25:33 +08:00
    正则?
    TtiGeR
        8
    TtiGeR  
       2018-02-20 17:35:00 +08:00 via iPhone
    如果数据是干净的(不是用户输入存在 injection 的可能)的话 eval()不是挺好么
    di94sh
        9
    di94sh  
       2018-02-20 17:47:15 +08:00
    '[1,2,3,4]'.strip('[]').split(',')
    jackyzy823
        10
    jackyzy823  
       2018-02-20 17:49:04 +08:00   ❤️ 4
    import ast; ast.literal_eval("[1,2,3,4]")
    laike9m
        11
    laike9m  
       2018-02-20 18:42:39 +08:00 via Android
    eval 正解
    l1093178
        12
    l1093178  
       2018-02-20 20:43:59 +08:00
    eval 会有安全性风险,ast.literal_eval 正解
    Eds1995
        13
    Eds1995  
       2018-02-21 10:28:27 +08:00 via Android
    用 eval 的人好可怕,楼上正解:import ast ast.literal_eval
    jakeyfly
        14
    jakeyfly  
    OP
       2018-02-21 13:40:49 +08:00
    @Eds1995 为啥可怕啊
    Eds1995
        15
    Eds1995  
       2018-02-21 14:16:20 +08:00 via Android
    @jakeyfly Eval 是邪恶的
    jakeyfly
        16
    jakeyfly  
    OP
       2018-02-21 16:52:17 +08:00
    @Eds1995 大佬 听不懂啊 求指导
    izoabr
        17
    izoabr  
       2018-02-22 00:28:44 +08:00
    >>> t = '[1,2,3,4,]'
    >>> eval(t)
    [1, 2, 3, 4]
    >>>
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1505 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:00 · PVG 08:00 · LAX 16:00 · JFK 19:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.