【问题标题】: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

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

【问题讨论】:

    标签: python pandas string list


    【解决方案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】:
    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
    

    【讨论】:

    • 哦,这段代码对我有用!!非常感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 2014-02-02
    • 1970-01-01
    • 2019-11-03
    • 1970-01-01
    • 2022-12-12
    • 2012-10-25
    相关资源
    最近更新 更多