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
。