2017-07-10 193 views
-2

即使它看起来很简单,我也无法解决这个问题。python string to list

我在作者出版物条目存储这样的txt文件刮数据库:

['Radoslav Bajus'],[['Economic Annals-XXI', '2016-06-21'], ['Actual Problems of Economics', '2016-01-01'], ['Actual Problems of Economics', '2015-01-01'], ['Actual Problems of Economics', '2015-01-01'], ['Accounting Reform in Transition and Developing Economies', '2009-12-01']] 

我最初是通过列表旨在循环。但是,当我读txt我最后:

"['Alena Andrejovská'],[['Economic Annals-XXI', '2016-10-10'], ['Journal of Applied Economic Sciences', '2016-09-01'], ['Acta Universitatis Agriculturae et Silviculturae Mendelianae Brunensis', '2016-01-01'], ['Agris On-line Papers in Economics and Informatics', '2016-01-01'], ['Actual Problems of Economics', '2016-01-01'], ['Acta Universitatis Agriculturae et Silviculturae Mendelianae Brunensis', '2015-01-01'], ['Actual Problems of Economics', '2015-01-01'], ['Journal of Applied Economic Sciences', '2015-01-01'], ['Journal of Applied Economic Sciences', '2014-01-01'], ['Journal of Applied Economic Sciences', '2013-01-01']]" 

有没有方法来读取引号和字符串格式? 我使用的代码如下:

fh = open('results_publications.txt', encoding = "utf8") 
    lst = [] 
    for line in fh: 
     lst.append(line.strip()) 

UPD好吧,抱歉没有说清楚。我有一个.txt文件,其中有以下由/ n分隔的条目(请参见下面的三个条目)。

['Alena Andrejovská'],[['Economic Annals-XXI', '2016-10-10'], ['Journal of Applied Economic Sciences', '2016-09-01'], ['Acta Universitatis Agriculturae et Silviculturae Mendelianae Brunensis', '2016-01-01'], ['Agris On-line Papers in Economics and Informatics', '2016-01-01'], ['Actual Problems of Economics', '2016-01-01'], ['Acta Universitatis Agriculturae et Silviculturae Mendelianae Brunensis', '2015-01-01'], ['Actual Problems of Economics', '2015-01-01'], ['Journal of Applied Economic Sciences', '2015-01-01'], ['Journal of Applied Economic Sciences', '2014-01-01'], ['Journal of Applied Economic Sciences', '2013-01-01']] 
['Radoslav Bajus'],[['Economic Annals-XXI', '2016-06-21'], ['Actual Problems of Economics', '2016-01-01'], ['Actual Problems of Economics', '2015-01-01'], ['Actual Problems of Economics', '2015-01-01'], ['Accounting Reform in Transition and Developing Economies', '2009-12-01']] 
['Ľudmila Bartóková'],[['Journal of Applied Economic Sciences', '2016-03-01'], ['E a M: Ekonomie a Management', '2015-01-01'], ['Journal of Applied Economic Sciences', '2013-01-01'], ['12th International Multidisciplinary Scientific GeoConference and EXPO - Modern Management of Mine Producing, Geology and Environmental Protection, SGEM 2012', '2012-12-01'], ['Journal of Applied Economic Sciences', '2012-12-01'], ['E a M: Ekonomie a Management', '2010-06-21']] 

我想将此txt文件读入列表中以便稍后能够循环访问。但是当你读取txt文件时,它会将每个条目转换为字符串并放入“”。我想弄清楚如何将它转换为列表列表,而不是字符串列表。

+0

什么是你想要的结果呢? – wpercy

+1

你的输入文件已经包含引号和括号了吗?在这种情况下,只需在文件内容中使用'ast.literal_eval'。 –

+0

抱歉不清楚。我已经在问题中添加了更新。 – Tatiana

回答

1

您可以从一个字符串转换回Python的数据,如

import ast 

data_string = "['Alena Andrejovská'],[['Economic Annals-XXI', '2016-10-10'], ['Journal of Applied Economic Sciences', '2016-09-01'], ['Acta Universitatis Agriculturae et Silviculturae Mendelianae Brunensis', '2016-01-01'], ['Agris On-line Papers in Economics and Informatics', '2016-01-01'], ['Actual Problems of Economics', '2016-01-01'], ['Acta Universitatis Agriculturae et Silviculturae Mendelianae Brunensis', '2015-01-01'], ['Actual Problems of Economics', '2015-01-01'], ['Journal of Applied Economic Sciences', '2015-01-01'], ['Journal of Applied Economic Sciences', '2014-01-01'], ['Journal of Applied Economic Sciences', '2013-01-01']]" 

data = ast.literal_eval(data_string) 
+1

可能想提及,'数据'是一个元组而不是列表 – MooingRawr

+0

尝试此代码更好 'list(eval(data_string))' –

+3

@SaeedGharedag​​hi [No](https://nedbatchelder.com/blog/201206/ eval_really_is_dangerous.html)。 –