2016-12-14 123 views
-1

我有一个列表以不同语言的Json格式存在,我希望在进一步将特定语言保存到不同的列表之前用它们的标签标识它们。如何访问Python中的字符串列表中的列表

假设我有.NET和Web标签用JSON格式即

>>> json_words = """ 
...  [ 
...  {".Net": [ 
...  ["ASP .NET", 3], 
...  ["Angular JS", 1] 
...  ]}, 
...  {"Web": [ 
...  ["Database", 3], 
...  ["jQuery", 3] 
...  ] } 
...  ] 
... """ 

注意括号的结束,以及用他们的基本语言和工具一起。在这个例子中,列表中的第一个字符串(在我的例子中是.net和web)被认为是标签,其余的是它的语言。现在

,我做了一件这样的检查是什么返回:

>>> import json 

>>> important_words = json.loads(json_words) 
>>> important_words = [str(s) for s in important_words] 
>>> important_words = [item.lower() for item in important_words] 

>>> print important_words[0] 
[u'[.net]', [u'asp .net', 3], [u'angular js', 1]] 

但我不能单独访问标签..

>>> print important_words[0][1] 
u 

如何访问只是标签,然后它的进一步名单。我也试图让它成为一个数组,但它根本没有帮助。

values = np.array(important_words) 

它实际上列表的方括号这是困扰我最...难道我正确地作出这个JSON名单?

任何形式的帮助将不胜感激...

+0

你确定这是代码你在跑?在写入时,尝试创建'important_words'时会失败。你在列表中调用'lower()'(它没有'lower'方法)。 – Holloway

+0

哦,不,这不是真正的代码......我只是举了一个例子,这就是我的想法......真正的代码是相当巨大的,所以我不能发布一切。 – Falcon

+0

@Falcon你需要创建一个小例子。了解如何创建[mcve]。 –

回答

0

如果我理解你想要做什么,我想将其转换为一个字典(orderedDict如果你想保持顺序)。您还可以从列表中筛选出数字,以便为您留下语言列表。

>>> frameworks = {framework[0]: [language[0] for language in framework[1:]] for framework in _list} 
>>> frameworks.keys() 
['[.Net]', '[Web]'] 
>>> frameworks['[.Net]'] 
['ASP .NET', 'MVC Framework', 'Angular JS', 'AJAX'] 
>>> frameworks['[Web]'] 
['Database', 'jQuery', 'Javascript', 'SQL Server', 'Bootstrap', 'Html', 'CSS'] 
+0

感谢您的帮助,但这不会工作,因为这只是一个示例示例真正的_list有更多的标签在他们和你的第二个输出即框架['[.Net]']你实际上黑客的代码是不正确的,我只想访问列表中的语言而不是数字,最后是否运行此代码?它不适合我。 – Falcon

+0

我确实运行过代码。你使用什么python版本?它给了什么错误? – Holloway

+0

我直接以'[.Net]'为例。如果你不想要数字,你也可以删除它们。我会编辑我的答案。 – Holloway

0

要转换的整体list成一个字符串:

>>> [str(s) for s in important_words] 

important_words是列表的list,例如第一s将是:

>>> important_words[0] 
[u'[.Net]', [u'ASP .NET', 3], [u'Angular JS', 1]] 

当你调用str(s)你得到整个列表的字符串表示:

>>> str(important_words[0]) 
u"[u'[.Net]', [u'ASP .NET', 3], [u'Angular JS', 1]]" 
0

如果您对基础分割你的清单“:”那么你就可以访问你的json_words。

>>> json_words = [str(s) for s in json_words] 
    >>> json_words = [item.lower() for item in json_words] 
    >>> tag_list = {} 
    >>> for i in range(0, len(json_words)): 
    ...  tag_list[i] = (json_words)[i].split(':')[0] #This will gives you list of first strings 
    >>> print tag_list 
    {0: "{'.net'", 1: "{'web'"} 
    >>> print tag_list.values() 
    ["{'.net'", "{'web'"] 

以及访问进一步列表拆分它逗号的基础是这样的:

>>> dotnet_list = (json_words)[i].split(':')[1].split(',') 
    ["'asp .net'", "'angular js'"] 

这是一个较长的方法,但一个简单的一个(我认为)

相关问题