【问题标题】:Reformatting a string from a text file into set of strings python将文本文件中的字符串重新格式化为字符串集python
【发布时间】:2018-07-21 01:36:08
【问题描述】:

我有一行从文本文件中读取,如下所示:

line="('18-1', '29-1', '30-1', '42-1', '44-1')"

我想把它转换成这样的一组字符串:

expected=['18-1', '29-1', '30-1', '42-1', '44-1']

有什么想法吗?我尝试 re.sub() 至少摆脱括号,但无济于事。

【问题讨论】:

    标签: python string reformatting


    【解决方案1】:

    你可以使用ast.literal_eval:

    import ast
    line="('18-1', '29-1', '30-1', '42-1', '44-1')"
    new_line = list(ast.literal_eval(line))
    

    输出:

    ['18-1', '29-1', '30-1', '42-1', '44-1']
    

    或者,使用re.findall

    import re
    vals = re.findall('\d+\-\d+', line)
    

    输出:

    ['18-1', '29-1', '30-1', '42-1', '44-1']
    

    【讨论】:

    • 谢谢。完美运行。
    【解决方案2】:

    你可以使用eval 方法来实现require。如下:

    line = "('18-1', '29-1', '30-1', '42-1', '44-1')"
    result = list(eval(line))
    expected = ['18-1', '29-1', '30-1', '42-1', '44-1']
    
    assert expected == result
    

    【讨论】:

    • ast.literal_eval 足以完成此任务。没有必要使用危险的eval 函数。
    • 是的,ast.literal_eval 更安全。我同意你的看法。
    猜你喜欢
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    相关资源
    最近更新 更多