2017-07-10 110 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)。 –