在Python中删除列表

时间:2017-01-05 20:34:32

标签: python list python-3.x

我在python中有一个列表,它是由许多函数生成的。它是这样产生的:

['01', '1.0', '[0.2]']

我想在制作后删除所有不必要的字符。

理想输出:

['01', '1.0', '0.2']

我基本上需要从列表中的最后一个字符串中删除[和]。

更新

list_test = ['01', '1.0', '[0.2]']
[i.strip('[]') if type(i) == str else str(i) for i in list_test]
print(list_test)

这不起作用,因为有和没有产生相同的结果:

['01', '1.0', '[0.2]']

所需的结果是:

['01', '1.0', '0.2']

提供解决方案:

l = ['01', '1.0', '[0.2]']
[i.strip('[0.2]') if type(i) == str else str(i) for i in l]
print(l)

输出:

['01', '1.0', '0.2']

Process finished with exit code 0

3 个答案:

答案 0 :(得分:4)

如果你只是需要删除一个字符串周围的可选[],这个单行应该可以解决问题:

l = [i.strip('[]') for i in l]

使用您的示例

>>> l = ['01', '1.0', '[0.2]']
>>> [i.strip('[]') for i in l]
['01', '1.0', '0.2']

它的作用:它遍历列表的所有字符串,如果它们位于字符串的开头或结尾,则删除任何[]。它还会将]0.2[转换为0.2

<强>更新

  

我得到AttributeError: 'int' object has no attribute 'strip'

在这种情况下,你的输入数组中有一个int,这个衬里应该可以解决这个问题:

l = [i.strip('[]') if type(i) == str else str(i) for i in l]

使用int:

的示例
>>> l = ['01', '1.0', '[0.2]', 2]
>>> [i.strip('[]') if type(i) == str else str(i) for i in l]
['01', '1.0', '0.2', '2']

它的作用是

  • 仅从字符串中删除[]
  • 将非字符串的所有内容转换为字符串

答案 1 :(得分:1)

如果你可以使用 regex ,你可以从字符串中获取数字:

>>> import re
>>> my_list = ['01', 1.0, [0.2]]
>>> my_nums = re.findall('\d+\.?\d*', repr(my_list))
#      ^                                 ^ convert `list` to `str` representation
#      ^ value of `my_nums` > ['01', '1.0', '0.2']

>>> ', '.join(my_nums)
'01, 1.0, 0.2'   # <--- Desired result

否则,可以将list转换为str,并根据要删除的项目列表从字符串中删除内容。例如:

my_list = ['01', 1.0, [0.2]]
remove_content = ["'", "[", "]"] # Content you want to be removed from `str`

my_str = repr(my_list)  # convert list to `str`

for content in remove_content:
    my_str = my_str.replace(content, '')

my_str持有的最终价值为:

>>> my_str
'01, 1.0, 0.2'

答案 2 :(得分:0)

你不需要正则表达式,这个简单的东西会起作用。

(str(['01', 1.0, [0.2]])
 .replace('[','')
 .replace(']','')
 .replace("'",'')
 .replace('"',''))

或者,如果你有许多字符,你认为没必要,

chars2remove = '''[]'"'''
s = str(['01', 1.0, [0.2]])
for char in chars2remove:
    s = s.replace(char, '')