[英]Remove ' from python list
我有一個列表,在python中看起來像這樣:
ex = ['(1..3),(5..8)']
我需要這樣列出:
[(1, 3), (5, 8)]
我嘗試使用替換功能,但只能得到['(1, 3), (5,8)']
並且不能丟失'
標記。
希望可以有人幫幫我。
謝謝
import ast
ex = ['(1..3),(5..8)']
list(ast.literal_eval(ex[0].replace('..', ',')))
# returns [(1, 3), (5, 8)]
ast.literal_eval
是安全的。 eval
不是。
對於您更新的問題:
ex2 = ['(2..5)', '(7..10)']
[ast.literal_eval(a.replace('..', ',')) for a in ex2]
# returns [(2, 5), (7, 10)]
看起來像一些正則表達式的任務。
>>> import re
>>> ex = ['(1..3),(5..8)']
>>> re.findall(r'\((\d+)\.\.(\d+)\)', ex[0])
[('1', '3'), ('5', '8')]
>>> # if you want tuple of numbers
... [tuple(map(int, x)) for x in _]
[(1, 3), (5, 8)]
這變得比我預期的更丑:
In [26]: ex = ['(1..22),(3..44)']
In [27]: [tuple([int(i) for i in s.strip('()').split('..')])
for s in ex[0].split(',')]
Out[27]: [(1, 22), (3, 44)]
如果你的格式是常量,這應該工作:
>>> n = list(eval(ex[0].replace("..",",")))
>>> n
[(1, 3), (5, 8)]
更新:使用文字eval(更安全):
import ast
result = list(ast.literal_eval(ex[0].replace("..",",")))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.