将非标准符号转换为列表

时间:2018-09-23 12:54:30

标签: 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中做到这一点?请注意双引号,并且有时字段为空(“”),即使字段应存在于输出字典中。

2 个答案:

答案 0 :(得分:6)

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

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

如果您确实需要数据作为dict,则可以使用以下dict理解:

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']

答案 1 :(得分:1)

嗯,我有这个可行的方法:

Controller.ts

输出:

import re

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

found = []

for match in re.finditer(r'((\d+)|("(.*?)"))', string):
    found.append(match.group(1).strip('"'))

print found