如何将CSV文件内字符串形式的列表转换为Python实际列表
错误原因及解决方案
错误本质
ast.literal_eval()触发语法错误的核心原因如下:
ast.literal_eval()仅支持解析符合Python语法规范的字面量表达式,合法的字符串元素列表需要给字符串添加单/双引号,比如["senior innovation manager"]才是可被识别的标准格式- 你CSV中存储的
[senior innovation manager]没有给内部字符串加引号,ast解析时会将senior、innovation、manager识别为未定义的变量名,不符合字面量语法规则,直接触发AST编译失败
转换方案
根据实际需求选择对应转换方法即可:
场景1:方括号内整段文本为列表的唯一元素
期望得到结果为["senior innovation manager"],参考代码:
import pandas as pd # 读取文件逻辑保持不变 df = pd.read_csv(file_path, sep=',', na_values='NA', encoding='latin-1') raw_str = df['title'][0] # 去除首尾方括号,清理字符串前后空白 content = raw_str.strip('[]').strip() df['title'][0] = [content] # 验证转换结果 print(df['title'][0]) print(type(df['title'][0]))
场景2:方括号内多元素以英文逗号分隔
如果实际数据格式为[senior innovation manager, data analyst, product director]这类多元素结构,期望得到多元素列表,参考代码:
import pandas as pd df = pd.read_csv(file_path, sep=',', na_values='NA', encoding='latin-1') raw_str = df['title'][0] content = raw_str.strip('[]').strip() # 按逗号分割后清理每个元素的空白,过滤空值 df['title'][0] = [item.strip() for item in content.split(',') if item.strip()] # 验证转换结果 print(df['title'][0]) print(type(df['title'][0]))
内容的提问来源于stack exchange,提问作者AlSub
相关产品推荐
相关产品推荐

