将列表的字符串表示形式转换为带引号和双引号的列表[重复]
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_csv
的converters
参数。
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
【讨论】:
哦,这段代码对我有用!!非常感谢您的帮助:)以上是关于将列表的字符串表示形式转换为带引号和双引号的列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章