【问题标题】:Add parentheses to list elements - Python为列表元素添加括号 - Python
【发布时间】:2016-08-26 07:15:37
【问题描述】:

我想以列表的形式检索文件中的一组数据。

以下是我从要添加到列表的文件中读取的数据:

文件输入:(3,5),(5,2),(2,1),(4,2),(4,1),(3,1)

以下代码显示了我现在拥有的内容:

with open("partial.txt") as f:
List = f.read().splitlines()

graph1 = ','.join('({0})'.format(w) for w in List)

print (graph1)

我得到的输出是:

>> (3,5),(5,2),(2,1),(4,2),(4,1),(3,1)

但我想要 [ ] 中的上述结果,如下所示:

>> [(3,5),(5,2),(2,1),(4,2),(4,1),(3,1)]

有人可以说明我需要做什么才能获得上述结果

【问题讨论】:

  • 是否要获取元组列表?
  • 只是:result = [eval(graph1)]
  • 是的元组列表。

标签: python string list file


【解决方案1】:
import ast

s = "(3,5),(5,2),(2,1),(4,2),(4,1),(3,1)"

>>> list(ast.literal_eval(s))
[(3, 5), (5, 2), (2, 1), (4, 2), (4, 1), (3, 1)]

这是 SO linkevalast.literal_eval 的对比

【讨论】:

  • 我这样做了,我得到:[((3, 5), (5, 2), (2, 1), (4, 2), (4, 1), (3, 1))]。为什么有多余的 ( ) ?
  • 最好使用ast.literal_eval()。此字符串的输出是相同的,但 ast.literal_eval() 实际上不会像 eval() 那样将进程的密钥分发给任何人。
  • @user3624406:听起来你改用[eval(s)]
【解决方案2】:

通过这段代码解决了它,元组列表! :

with open('partial.txt') as f:
graph = [tuple(map(int, i.split(','))) for i in f]

print (graph)

【讨论】:

    猜你喜欢
    • 2011-10-08
    • 1970-01-01
    • 2020-10-08
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 2023-02-24
    • 2018-08-06
    • 1970-01-01
    相关资源
    最近更新 更多