Python 将非标准符号转换为列表

Python 将非标准符号转换为列表,python,Python,我有以下几行数据 15 0 42 50 "some text" "" 4 4 "text" 我想将其转换为字典,为其指定特定名称: { 'data1': 15, 'data2': 0, 'data3': 42, 'data4': 50, 'data5': 'some text', 'data6': '', 'data7': 4, 'data8': 4, 'data9': 'text', } 在Python中如何实现这一点

我有以下几行数据

15 0 42 50 "some text" "" 4 4 "text"
我想将其转换为字典,为其指定特定名称:

{
    'data1': 15,
    'data2': 0,
    'data3': 42,
    'data4': 50,
    'data5': 'some text',
    'data6': '',
    'data7': 4,
    'data8': 4,
    'data9': 'text',
}

在Python中如何实现这一点?请注意双引号,有时值是空的(“”),但即使字段应该存在于输出字典中。

好的,我有这样的方法:

重新导入
字符串='15 0 42 50“某些文本”“4 4”文本'
找到=[]
对于re.finditer(r'(\d+)|(“(.*))”)中的匹配,字符串:
找到.append(match.group(1).strip(“”))
打印找到
输出:

['15', '0', '42', '50', 'some text', '', '4', '4', 'text']

好吧,我有一个有效的方法:

重新导入
字符串='15 0 42 50“某些文本”“4 4”文本'
找到=[]
对于re.finditer(r'(\d+)|(“(.*))”)中的匹配,字符串:
找到.append(match.group(1).strip(“”))
打印找到
输出:

['15', '0', '42', '50', 'some text', '', '4', '4', 'text']

您所拥有的基本上只是空间分隔的csv数据,因此您可以使用来解析它:

data = '15 0 42 50 "some text" "" 4 4 "text"'

import csv
import io

file = io.StringIO(data)  # use io.BytesIO in python 2
reader = csv.reader(file, delimiter=' ')
split_data = next(reader)
parsed_data = [int(x) if x.isdigit() else x for x in split_data]

# result: [15, 0, 42, 50, 'some text', '', 4, 4, 'text']
如果您确实需要数据作为dict,您可以使用以下dict理解:

>>> {'data{}'.format(i): x for i, x in enumerate(parsed_data, 1)}
{'data1': 15, 'data2': 0, 'data3': 42, 'data4': 50, 'data5': 'some text', 'data6': '', 'data7': 4, 'data8': 4, 'data9': 'text'}

您所拥有的基本上只是空间分隔的csv数据,因此您可以使用来解析它:

data = '15 0 42 50 "some text" "" 4 4 "text"'

import csv
import io

file = io.StringIO(data)  # use io.BytesIO in python 2
reader = csv.reader(file, delimiter=' ')
split_data = next(reader)
parsed_data = [int(x) if x.isdigit() else x for x in split_data]

# result: [15, 0, 42, 50, 'some text', '', 4, 4, 'text']
如果您确实需要数据作为dict,您可以使用以下dict理解:

>>> {'data{}'.format(i): x for i, x in enumerate(parsed_data, 1)}
{'data1': 15, 'data2': 0, 'data3': 42, 'data4': 50, 'data5': 'some text', 'data6': '', 'data7': 4, 'data8': 4, 'data9': 'text'}

你的数据来自哪里?它是一个文件吗?它只是一个数字还是用括号括起来的文本?你的数据来自哪里?它是一个文件吗?它只是一个数字还是用括号括起来的文本?这对我不起作用,我得到:TypeError:initial_值必须是unicode或None,而不是str。可能是因为输入数据不是来自文件,而是来自另一个列表?如何修复它?@zerocool在python 2中使用
io.BytesIO
而不是
StringIO
。这对我不起作用,我得到:TypeError:initial_值必须是unicode或None,而不是str。可能是因为输入数据不是来自文件,而是来自另一个列表?如何修复它?@zerocool在python 2中使用
io.BytesIO
而不是
StringIO