将非标准符号转换为列表

zer*_*ool 1 python

我有以下数据

15 0 42 50 "some text" "" 4 4 "text"
Run Code Online (Sandbox Code Playgroud)

我想将其转换为字典,为其指定某些名称:

{
    'data1': 15,
    'data2': 0,
    'data3': 42,
    'data4': 50,
    'data5': 'some text',
    'data6': '',
    'data7': 4,
    'data8': 4,
    'data9': 'text',
}
Run Code Online (Sandbox Code Playgroud)

我怎么能用Python做到这一点?请注意双引号,有时值为空("")但即使字段应存在于输出字典中.

Ara*_*Fey 6

你所拥有的基本上只是空格分隔的csv数据,所以你可以使用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']
Run Code Online (Sandbox Code Playgroud)

如果您真的需要数据作为词典,您可以使用以下词典理解:

>>> {'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'}
Run Code Online (Sandbox Code Playgroud)