Python 从字符串列表中删除键和值

Python 从字符串列表中删除键和值,python,Python,编辑:很抱歉误导大家,我对数据进行了修改。这就是数据加载熊猫后的样子 谢谢你总是帮忙。我有一个字符串列表,如下所示: Index Data 0 "[{"name": "bob", "age":"11", "id":"94884-0abdvnd-90", "participantid":"Me", "sentiment":"NEUTRAL", "content":"Hey, how you doing."}]" 1

编辑:很抱歉误导大家,我对数据进行了修改。这就是数据加载熊猫后的样子

谢谢你总是帮忙。我有一个字符串列表,如下所示:

    Index                 Data
     0           "[{"name": "bob", "age":"11", "id":"94884-0abdvnd-90", "participantid":"Me", "sentiment":"NEUTRAL", "content":"Hey, how you doing."}]" 

     1           "[{"name": "Roland", "age":"16", "id":"94884-0abdvnd-90", "participantid":"boy", "sentiment":"NEUTRAL", "content":"Hey, I'm doing good and you?."}]"]
我的目标是删除某些键和值,这样我就只剩下内容了。即:

     Index                 Data
     0           "[{"content":"Hey, how you doing."}]" 

     1           "[{"content":"Hey, I'm doing good and you?."}]"]
我最初的方法是使用eval将每个字符串转换为list,然后在其上循环,但一次只对一个字符串有效。i、 e我只能在mylist[0]上求值,然后手动求值mylist

以下是数据的屏幕截图:

以下是我的代码示例:

import ast
x = ast.literal_eval(mylist)
keys_to_keep = ["content"]
new_list = [{ key: item[key] for key in keys_to_keep } for item in x]
上面的代码将带来一个错误,除非我使用x[0],x等。有没有更好的方法来做到这一点


谢谢。

您可以在这里使用Python标准库的
json
模块-它比在输入上使用
eval
更安全,因为输入可能包含几乎所有的代码

例如,像这样(假设
mylist
是一个字符串列表,每个字符串都是一个有效的json,有一个元素列表):


这在语法上是无效的,请重新访问这里的引号好吗?看起来像JSON;你试过使用JSON解析器吗?它实际上是一个csv文件。我把它转换成了列表,这样我就可以很容易地操作它。要么你完全误解了你的文件内容,要么你的CSV完全崩溃了。(可能两者都有。)好的,我使用熊猫加载csv文件,这给了我两列:索引列和数据列。数据列每个看起来如下所示:0:“[{”name:“bob”,“age:“11”,“id:“94884-0abdvnd-90”,“participanti:“Me”,“emotation:“NEUTRAL”,“content:“嘿,你好。”}]”1:“[{”name:“Roland”,“age:“16”,“id:“94884-0abdvnd-90”,“participanid:“boy”,“emotation:“NEUTRAL”,“content:”嘿,我做得很好,你呢?“}]”所以这个例子中的字符串值是我的字符串列表,对吗?你也可以在循环中应用它。您问题中的字符串文字显然不是您创建
mylist
的实际方式,因为它不会转义符号
在双引号字符串中。您当前版本的问题中的
my_list
声明不是有效的Python代码,因此我不知道
my_list
变量中真正包含的数据是什么。在您的示例中,每一行都有一个仅包含一个元素的列表-是否总是这样?如果不是,那么如果第一行有4个元素,第二行有7个元素,最后你想要得到什么。您想得到一个包含11个元素的列表,还是一个包含7个元素的列表,第二个包含4个元素的列表?根据我上面列出的内容,数据列中有一个以字符串引用的列表,该列表中有一个字典。我需要的就是删除字典中的键,除了我想留下的内容键。所以最后,我只想让内容键单独存在,并删除所有其他内容。
import json
keys_to_keep = ["content"]
new_list = []
for x in mylist:
    item = json.loads(x)
    new_list.append({ key: item[key] for key in keys_to_keep})