【问题标题】:How do I split a string and put it into a dictionary?如何拆分字符串并将其放入字典中?
【发布时间】:2015-01-07 12:03:16
【问题描述】:

所以我有一个长字符串,我想将它放入带有索引和键的字典格式中。字符串如下所示:

"(\'unpredictable\', \'JJ\'), (\'man\', \'NN\')"

等等等等。

我想将字符串拆分,并让字典中的每个条目的索引与括号中的第一部分匹配,并与第二部分的键匹配。在这个例子中,我理想的字典应该是这样的:

{'unpredictable': 'JJ', 'man': 'NN'}

最好的方法是什么?

【问题讨论】:

    标签: python string python-2.7 dictionary


    【解决方案1】:

    您的字符串是有效 Python 代码的表示。这意味着您可以使用ast.literal_eval 将其解析成一个元组,然后在其上调用dict

    >>> from ast import literal_eval
    >>> data = "(\'unpredictable\', \'JJ\'), (\'man\', \'NN\')"
    >>> literal_eval(data)
    (('unpredictable', 'JJ'), ('man', 'NN'))
    >>> dict(literal_eval(data))
    {'man': 'NN', 'unpredictable': 'JJ'}
    >>>
    

    【讨论】:

      【解决方案2】:

      我使用re.findall 找到所有单词,然后使用切片对其进行压缩

      >>> import re
      >>> a="(\'unpredictable\', \'JJ\'), (\'man\', \'NN\')"
      >>> k=re.findall('\w+',a)
      >>> k
      ['unpredictable', 'JJ', 'man', 'NN']
      >>> dict(zip(k[::2],k[1::2]))
      {'unpredictable': 'JJ', 'man': 'NN'}
      

      【讨论】:

        【解决方案3】:

        我找到了两种最简单的方法,希望对您有所帮助。

        1.  >>> s="(\'unpredictable\', \'JJ\'), (\'man\', \'NN\')"    
           >>> dict(eval(s))  
           {'unpredictable': 'JJ', 'man': 'NN'}  
          
        2.  >>> s="(\'unpredictable\', \'JJ\'), (\'man\', \'NN\')"     
           >>> dic={}  
           >>> for each in eval(s):  
           ...     dic[each[0]] = each[1]  
           ...
           >>> dic  
           {'unpredictable': 'JJ', 'man': 'NN'}
          

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-09-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-04
          • 2020-08-26
          • 2014-11-27
          • 1970-01-01
          相关资源
          最近更新 更多