簡體   English   中英

從python列表中刪除'

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM