将列表的字符串表示形式转换为带引号和双引号的列表[重复]

Posted

技术标签:

【中文标题】将列表的字符串表示形式转换为带引号和双引号的列表[重复]【英文标题】:Convert string representation of list to list with quote and double quotes [duplicate] 【发布时间】:2020-11-18 18:44:38 【问题描述】:

虽然我参考了很多来源,如How to convert string representation of list to a list? ,但我无法解决下面的问题。

我的列表如下所示,我将此列表作为列添加到数据框,并保存了数据框。

ls = [['abc'],['a"bcd"e', "ab'cde'"]]
df['list_col'] = ls
df.to_csv('path')

之后,我打开df数据框,通过下面的代码确认列表变成了列表的字符串表示。

type(df.list_col[0]) # str

所以我尝试让我的列表的字符串表示使用下面的代码。

import ast
df.list_col = [ast.literal_eval(ls) for ls in df.list_col]
# SyntaxError: EOL while scanning string literal

有什么办法可以解决这个问题吗?

【问题讨论】:

【参考方案1】:

这是你想要的吗?

>>> ls = [['abc'],['a"bcd"e', "ab'cde'"]]
>>> l = [i for a in ls for i in a]
['abc','a"bcd"e', "ab'cde'"]

【讨论】:

其实我的本意是[['abc'],['a"bcd"e', "ab'cde'"]],原来的名单,不过谢谢大家的帮助! :)【参考方案2】: 读入文件时使用pandas.read_csvconverters参数。
import pandas as pd
from ast import literal_eval

# test dataframe
ls = [['abc'],['a"bcd"e', "ab'cde'"]]
df = pd.DataFrame('test': ls)

# save to csv
df.to_csv('test2.csv', index=False)

# read file in with converters
df2 = pd.read_csv('test2.csv', converters='test': literal_eval)

print(type(df2.iloc[0, 0]))
[out]: list

【讨论】:

哦,这段代码对我有用!!非常感谢您的帮助:)

以上是关于将列表的字符串表示形式转换为带引号和双引号的列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将包含单引号和双引号值的 Python 列表转换为所有双引号值

如何将列表的字符串表示形式转换为列表?

如何将列表的字符串表示形式转换为列表?

字符串,列表和元组

从单词列表中删除引号和双引号

Python中的列表