在Python中使用.csv列中的列表

在Python中使用.csv列中的列表,python,csv,Python,Csv,我正在做一个在.csv文件中包含一个迷你数据库的项目。我有csv模块。 该文件有四列: word_number;sentence;pronoun;variants 我需要能够向它写入一个列表列表(其中每个列表包含一行),然后,如果需要的话,将列表列表取回。 问题是,第二列和第四列还必须包含列表。。。因为引用,它们变成了字符串。我尝试对读写器使用如下参数集: (csvfile, quoting=csv.QUOTE_NONE, delimiter=";", escapechar

我正在做一个在.csv文件中包含一个迷你数据库的项目。我有
csv
模块。 该文件有四列:

word_number;sentence;pronoun;variants
我需要能够向它写入一个列表列表(其中每个列表包含一行),然后,如果需要的话,将列表列表取回。 问题是,第二列和第四列还必须包含列表。。。因为引用,它们变成了字符串。我尝试对读写器使用如下参数集:

(csvfile, quoting=csv.QUOTE_NONE, delimiter=";", escapechar=' ',)
(csvfile, quoting=csv.QUOTE_NONE, delimiter=';', quotechar='',escapechar='\\')
他们都帮不上忙。 这两列中的列表中的字符串可能包含逗号和撇号,所以我也尝试覆盖它们

抱歉,如果这是一个愚蠢的问题,但我只是不明白
QUOTE\u NONE
应该做什么,这一切对我来说都没有意义

列表列表的一个示例:

[[1, ['У', 'мене', 'не', '(', 'є', ')', 'велика', "сім'я", '.'], 'мене', ['я', 'мені']], 
[0, ['Моя', "сім'я", '—', 'це', 'я', ',', 'мама', 'і', 'тато', '.'], 'Моя', ['Моєї', 'Моїй', 'Мою']], 
[3, ['Моя', "сім'я", '—', 'це', 'я', ',', 'мама', 'і', 'тато', '.'], 'це', ['цього', 'цьому', 'цім']], 
[4, ['Моя', "сім'я", '—', 'це', 'я', ',', 'мама', 'і', 'тато', '.'], 'я', ['мене', 'мені']], 
[0, ['Мого', 'тата', 'звати', 'Іван', '.'], 'Мого', ['Мій', 'Моєму']]]
在.csv文件中是这样的:

1;['У',  'мене',  'не',  '(',  'є',  ')',  'велика',   "сім'я ",  '.'];мене;['я',  'мені']
0;['Моя',   "сім'я ",  '—',  'це',  'я',  ',',  'мама',  'і',  'тато',  '.'];Моя;['Моєї',  'Моїй',  'Мою']
3;['Моя',   "сім'я ",  '—',  'це',  'я',  ',',  'мама',  'і',  'тато',  '.'];це;['цього',  'цьому',  'цім']
4;['Моя',   "сім'я ",  '—',  'це',  'я',  ',',  'мама',  'і',  'тато',  '.'];я;['мене',  'мені']
0;['Мого',  'тата',  'звати',  'Іван',  '.'];Мого;['Мій',  'Моєму']
它从文件中读入以下内容:

['1', '[\'У\', \'мене\', \'не\', \'(\', \'є\', \')\', \'велика\', "сім\'я", \'.\']', 'мене', "['я', 'мені']"]
['0', '[\'Моя\', "сім\'я", \'—\', \'це\', \'я\', \',\', \'мама\', \'і\', \'тато\', \'.\']', 'Моя', "['Моєї', 'Моїй', 'Мою']"]
['3', '[\'Моя\', "сім\'я", \'—\', \'це\', \'я\', \',\', \'мама\', \'і\', \'тато\', \'.\']', 'це', "['цього', 'цьому', 'цім']"]
['4', '[\'Моя\', "сім\'я", \'—\', \'це\', \'я\', \',\', \'мама\', \'і\', \'тато\', \'.\']', 'я', "['мене', 'мені']"]
['0', "['Мого', 'тата', 'звати', 'Іван', '.']", 'Мого', "['Мій', 'Моєму']"]
这是西里尔语,如果读起来有问题,我很抱歉。我想如果需要的话,我可以用拉丁字母做例子

我在想,也许只是把这些列表转换成字符串,再转换成列表?但我真的不知道该怎么做。去除[]中的每一个,然后使用re.split按引号、空格和逗号的组合进行拆分?我猜它可以这样工作,但我相信用.csv解决这个问题会更容易、更好


如果有任何帮助,我将不胜感激

要将列表字符串转换回列表,可以执行以下操作:

import ast
a = "['я', 'мені']"
a = ast.literal_eval(a)
print(a,type(a))
输出:

['я', 'мені'] <class 'list'>

您可以在此处查看此功能的文档:

您愿意使用图书馆吗?例如熊猫?这将降低解决方案的复杂性。@Andreas是的,当然!你们想把列表串变回列表,对吗?@KnowledgeGainer基本上是的。我的列表被引用并变成一个字符串,所以我需要阻止它这样做,或者找到一种方法来逆转这个过程。很抱歉,我花了这么长时间来回答这个问题,我必须更改代码中的其他问题,以检查它是否有效,但我在项目外部进行了检查,我觉得它确实有效!当我确定后,将标记为解决方案,但已经谢谢了@锂是的,当然,让我知道,很高兴帮助你。