使用自定义分隔符分割字符串

时间:2019-07-18 20:49:48

标签: python

我在python中有一个字符串:

dic = {
  "field1": "data1",
  "field2": "data2",
  "field3": "data3"
}

我需要使用以下字符串创建一个dic:

{{1}}

我该怎么做?

3 个答案:

答案 0 :(得分:1)

您需要在||之后分割数据。但是正确的field3和data3的顺序不正确。

string = "field1|data1||field2|data2||field3||data3"
dic = {}

data = string.split("||")
for i in range(len(data)):
    elem = data[i]
    if "|" in elem:
        keyVal = elem.split("|")
        dic[keyVal[0]] = keyVal[1]

print(dic)

答案 1 :(得分:1)

您可以对split使用dict理解,首先输入||,然后再输入每个|

{k: v for k, v in (i.split('|') for i in text.split('||'))}

如果您喜欢map

{k: v for k, v in map(lambda i: i.split('|'), text.split('||'))}

示例:

In [12]: text = "field1|data1||field2|data2||field3|data3"                                                                                                                                                  

In [13]: {k: v for k, v in (i.split('|') for i in text.split('||'))}                                                                                                                                        
Out[13]: {'field1': 'data1', 'field2': 'data2', 'field3': 'data3'}

In [14]: {k: v for k, v in map(lambda i: i.split('|'), text.split('||'))}                                                                                                                                   
Out[14]: {'field1': 'data1', 'field2': 'data2', 'field3': 'data3'}

答案 2 :(得分:0)

说辞是最优雅的方式

string = "field1|data1||field2|data2||field3|data3"
{k:v for k,v in [i.split("|") for i in string.split("||")]}

但是,可以使用传统的for循环

d={}
for i in string.split(r"||"):
    temp = (i.split("|"))
    d[temp[0]]=temp[1]