当前位置: 首页 > 面试题库 >

在Python中将以分号分隔的字符串拆分为字典

慕容坚
2023-03-14
问题内容

我有一个看起来像这样的字符串:

"Name1=Value1;Name2=Value2;Name3=Value3"

Python中是否有内置类/函数将采用该字符串并构造一个字典,就像我已经做到了那样:

dict = {
    "Name1": "Value1",
    "Name2": "Value2",
    "Name3": "Value3"
}

我浏览了可用的模块,但似乎找不到任何匹配的模块。

谢谢,我确实知道如何自己编写相关代码,但是由于此类较小的解决方案通常是等待发生的雷区(即有人写道:Name1 =’Value1 =
2’;)等,因此我通常更喜欢使用测试功能。

那我自己去做


问题答案:

没有内置功能,但是您可以通过生成器理解相当简单地完成此操作:

s= "Name1=Value1;Name2=Value2;Name3=Value3"
dict(item.split("=") for item in s.split(";"))

[编辑]
在更新中,您指示您可能需要处理报价。这确实使事情复杂化,具体取决于您要寻找的确切格式是什么(接受什么报价字符,什么是转义字符等)。您可能需要查看csv模块,以查看它是否可以覆盖您的格式。这是一个示例:(请注意,此示例的API有点笨拙,因为CSV旨在迭代一系列记录,因此,我正在调用.next()来仅查看第一行。满足您的需求):

>>> s = "Name1='Value=2';Name2=Value2;Name3=Value3"

>>> dict(csv.reader([item], delimiter='=', quotechar="'").next() 
         for item in csv.reader([s], delimiter=';', quotechar="'").next())

{'Name2': 'Value2', 'Name3': 'Value3', 'Name1': 'Value1=2'}

但是,根据格式的确切结构,您可能需要编写自己的简单解析器。



 类似资料:
  • 问题内容: 当我有1、2、3等字符串列表时,我想将此列用作一列 是否可以通过sql查询? 例如) <-我知道这不起作用。 问题答案: 使用任意数字的子查询来分割您的字符串。您可以使用‘1,2,3’代替vals。 看到它正常工作

  • 问题内容: 一些外部数据供应商希望给我一个数据字段-管道分隔的字符串值,我觉得这很难处理。 没有应用程序编程语言的帮助,有没有办法将字符串值转换为行? 但是,存在一个困难,该字段具有未知数量的定界元素。 有问题的数据库引擎是MySQL。 例如: 问题答案: 它可能没有我最初想象的那么困难。 这是一种通用方法: 计算分隔符的出现次数 循环多次,每次获取一个新的定界值并将该值插入第二个表中。

  • 问题内容: 欲分割为4的阵列,以利用 这是我的代码: 但是,结果标记是一个空数组:[],而不是 我想要的4数组。 我已经测试过更改一点: 这次的结果标记为。这与我想要的接近,但是我真的不想在拆分之前添加此“ 1”。 问题基本上是,如果它仅包含空元素,它将返回一个空数组。 您能帮助解决问题吗? 问题答案: 您需要使用带有limit参数的重载方法。 从文档(重点是我的): limit参数控制应用图案的

  • 在逗号处划分字符串的最佳方法是什么,这样每个单词都可以成为ArrayList的一个元素? 例如:

  • 问题内容: 我需要在SQL Server 2012中将一列中的字符串拆分为一个字符,并将每个字符串拆分成它自己的列。 例如:如果我有一个栏,我需要把它拆分成,,,,,与每个这些转化为自己列。 要拆分的列的长度可能会有所不同,因此我需要使其尽可能地动态。 问题答案: 您可以这样做: 输出: 这是动态版本:

  • 我希望能够根据子字符串分隔符拆分字符串,在分隔符子字符串的第一个字符之前开始拆分。现在: 将给我,但我希望得到