将数组(字符串)的字符串表示形式转换为python中的数组

时间:2018-01-03 15:15:35

标签: python arrays string unicode

我有一个unicode数组,我想将它转换为数组。 给定输入格式和输出格式如下:

p = u'(abcd, pqrs, fghj, mjki, loki)'

我想要输出如下:

output = ('abcd', 'pqrs', 'fghj', 'mjki', 'loki')

5 个答案:

答案 0 :(得分:0)

很脏的方式,但是:

>>> tuple(u'(abcd, pqrs, fghj, mjki, loki)'[1:-1].split(', '))
('abcd', 'pqrs', 'fghj', 'mjki', 'loki')


p = tuple(p[1:-1].split(', '))

因此,我认为您可以在使用前改进输入数据。

答案 1 :(得分:0)

p = u'(abcd, pqrs, fghj, mjki, loki)'
output = [x.strip() for x in p.strip("(").strip(")").split(",")]
print(output)

这将保留unicode:

[u'abcd', u'pqrs', u'fghj', u'mjki', u'loki']

答案 2 :(得分:0)

您可以replace()预先设置空字符串,使用逗号','拆分字符串,然后使用str.strip对每个元素应用map()

p = u'(abcd, pqrs, fghj, mjki, loki)'

print(tuple(map(str.strip, p.replace('(', '').replace(')','').split(','))))

哪个输出:

('abcd', 'pqrs', 'fghj', 'mjki', 'loki')

答案 3 :(得分:0)

由于它看起来像几乎,就像许多可用的YAML语法之一一样,我建议将其修补为正确的YAML,然后使用正确的YAML解析器:

import yaml

p = u'(abcd, pqrs, fghj, mjki, loki)'
print(yaml.load('[' + p[1:-1] + ']'))

print(yaml.load(p.replace('(', '[').replace(')', ']')))

这样也可以正确解析嵌套结构(如果它们出现)。

为了获得更好的性能(如果结构很大),您甚至可以考虑这个:p.translate({40:91, 41:93})将括号翻译成括号。

答案 4 :(得分:0)

您可以使用re.findall

import re
p = u'(abcd, pqrs, fghj, mjki, loki)'
data = tuple(map(str, re.findall('[a-zA-Z]+', p)))

输出:

('abcd', 'pqrs', 'fghj', 'mjki', 'loki')