Python - 将字符串转换为数组

GCi*_*ien 1 python arrays string

我将如何将以下字符串转换为带有 python 的数组(此字符串可能有无限数量的项目)?

'["Foo","Bar","Baz","Woo"]'
Run Code Online (Sandbox Code Playgroud)

这绝对也是一个字符串表示。type()给:

<class 'str'>
Run Code Online (Sandbox Code Playgroud)

更新:

知道了。

interestedin = request.POST.get('interestedIn')[1:-1].split(',')

interested = []

for element in interestedin:
    interested.append(element[1:-1])
Run Code Online (Sandbox Code Playgroud)

哪里request.POST.get('interestedIn')给出了'["Foo","Bar","Baz","Woo"]'字符串列表“东西”。

Lex*_*yan 17

你可以这样做

import ast

list = '["Foo","Bar","Baz","Woo"]'
list = ast.literal_eval(list)
print list
Run Code Online (Sandbox Code Playgroud)

  • @GCien 这应该被标记为正确答案。 (2认同)

Had*_*dij 7

无封装解决方案

您可以使用eval函数:

list = eval('["Foo", "Bar", "Baz", "Woo"]')
print (list)

# ['Foo', 'Bar', 'Baz', 'Woo']
Run Code Online (Sandbox Code Playgroud)

替代解决方案

根据baptx 的评论,另一种方法(可能是更好的方法)是使用ast包:

from ast import literal_eval

list = literal_eval('["Foo", "Bar", "Baz", "Woo"]')
print (list)

# ['Foo', 'Bar', 'Baz', 'Woo']
Run Code Online (Sandbox Code Playgroud)

  • 如果数据不受信任,这看起来可能很危险,因为它可以执行代码,我读到建议使用“ast.literal_eval”代替:/sf/ask/1063837141/ vs-ast-文字-评估 (2认同)

小智 4

处理字符串 '["Foo","Bar","Baz","Woo"]':

str = '["Foo","Bar","Baz","Woo"]'
str1 = str.replace(']', '').replace('[', '')
l = str1.replace('"', '').split(",")
print l # ['Foo', 'Bar', 'Baz', 'Woo'] A list
Run Code Online (Sandbox Code Playgroud)

如果你的意思是使用Python数组模块,那么你可以这样做:

import array as ar

x = ar.array('c')  # Character array
for i in ['Foo', 'Bar', 'Baz', 'Woo']: x.extend(ar.array('c', i))
print x  #array('c', 'FooBarBazWoo')
Run Code Online (Sandbox Code Playgroud)

如果你考虑使用NumPy,事情会简单得多:

import numpy as np

y = np.array(['Foo', 'Bar', 'Baz', 'Woo'])
print y #  ['Foo' 'Bar' 'Baz' 'Woo']
Run Code Online (Sandbox Code Playgroud)