【发布时间】:2021-05-05 10:56:28
【问题描述】:
我正在做一个涉及 .csv 文件中的小型数据库的项目。我有csv 模块。
该文件有四列:
word_number;sentence;pronoun;variants
我需要能够向它写入一个列表列表(其中每个列表包含一行),然后,如果需要,可以取回这个列表列表。 问题是,第二列和第四列也必须包含列表......并且由于引用它们变成了字符串。我尝试为读取器和写入器使用这些参数集:
(csvfile, quoting=csv.QUOTE_NONE, delimiter=";", escapechar=' ',)
(csvfile, quoting=csv.QUOTE_NONE, delimiter=';', quotechar='',escapechar='\\')
而且它们都没有帮助。 这两列中的列表中的字符串可能包含逗号和撇号,所以我也在尝试覆盖它。
对不起,如果这是一个愚蠢的问题,但我只是不明白 QUOTE_NONE 应该做什么了,这一切对我来说开始变得毫无意义。
列表列表示例:
[[1, ['У', 'мене', 'не', '(', 'є', ')', 'велика', "сім'я", '.'], 'мене', ['я', 'мені']],
[0, ['Моя', "сім'я", '—', 'це', 'я', ',', 'мама', 'і', 'тато', '.'], 'Моя', ['Моєї', 'Моїй', 'Мою']],
[3, ['Моя', "сім'я", '—', 'це', 'я', ',', 'мама', 'і', 'тато', '.'], 'це', ['цього', 'цьому', 'цім']],
[4, ['Моя', "сім'я", '—', 'це', 'я', ',', 'мама', 'і', 'тато', '.'], 'я', ['мене', 'мені']],
[0, ['Мого', 'тата', 'звати', 'Іван', '.'], 'Мого', ['Мій', 'Моєму']]]
在 .csv 文件中是这样的:
1;['У', 'мене', 'не', '(', 'є', ')', 'велика', "сім'я ", '.'];мене;['я', 'мені']
0;['Моя', "сім'я ", '—', 'це', 'я', ',', 'мама', 'і', 'тато', '.'];Моя;['Моєї', 'Моїй', 'Мою']
3;['Моя', "сім'я ", '—', 'це', 'я', ',', 'мама', 'і', 'тато', '.'];це;['цього', 'цьому', 'цім']
4;['Моя', "сім'я ", '—', 'це', 'я', ',', 'мама', 'і', 'тато', '.'];я;['мене', 'мені']
0;['Мого', 'тата', 'звати', 'Іван', '.'];Мого;['Мій', 'Моєму']
它从文件中读取到这个:
['1', '[\'У\', \'мене\', \'не\', \'(\', \'є\', \')\', \'велика\', "сім\'я", \'.\']', 'мене', "['я', 'мені']"]
['0', '[\'Моя\', "сім\'я", \'—\', \'це\', \'я\', \',\', \'мама\', \'і\', \'тато\', \'.\']', 'Моя', "['Моєї', 'Моїй', 'Мою']"]
['3', '[\'Моя\', "сім\'я", \'—\', \'це\', \'я\', \',\', \'мама\', \'і\', \'тато\', \'.\']', 'це', "['цього', 'цьому', 'цім']"]
['4', '[\'Моя\', "сім\'я", \'—\', \'це\', \'я\', \',\', \'мама\', \'і\', \'тато\', \'.\']', 'я', "['мене', 'мені']"]
['0', "['Мого', 'тата', 'звати', 'Іван', '.']", 'Мого', "['Мій', 'Моєму']"]
这是一种西里尔语言,如果阅读有问题,我很抱歉。如果需要,我想我可以用拉丁字母做例子。
我在想也许只是以某种方式将那些列表转换为字符串?但我真的不知道该怎么做。剥离 [] 中的每一个,然后使用 re.split? 用引号、空格和逗号的组合分割?猜猜它可以像那样工作,但我相信用 .csv 解决这个问题会更容易更好。
如果有任何帮助,我将不胜感激!
【问题讨论】:
-
你愿意使用图书馆吗?例如。熊猫?它将降低解决方案的复杂性。
-
@Andreas 是的,当然!
-
你想把列表的字符串转回列表,对吧?
-
@KnowledgeGainer 基本上,是的。我的列表被引用并变成了一个字符串,所以我需要阻止它这样做,或者稍后找到一种方法来扭转这个过程