【问题标题】:Cannot remove single quotes from string无法从字符串中删除单引号
【发布时间】:2021-11-20 15:34:10
【问题描述】:

我遇到了一个非常奇怪的问题:我得到了一个字符串列表,如下所示:

batch = ['{"SageMakerOutput":[{"label":"LABEL_8","score":0.9152628183364868},"inputs":"test"}',
 '{"SageMakerOutput":[{"label":"LABEL_8","score":0.9769203066825867},"inputs":"Alles OK"}',
 '{"SageMakerOutput":[{"label":"LABEL_8","score":0.9345938563346863},"inputs":"F"}']

在列表的每个条目中,我想删除单引号“'”,但不知何故我无法使用 .replace() 删除它:

for line in batch:
    line = line.replace("'","")

不明白

【问题讨论】:

  • 为什么不把它读成 json? import json; json.loads(line)?
  • line = line.replace("'","") 不会改变 batch。您只是在循环主体中为名称line 分配了一个不同的字符串,该分配不会影响batch 中的不可变字符串,并且在通过循环后丢失。
  • @GhostOps,请,don't suggest eval,如果有合适的工具来处理这个问题。
  • 教科书XY问题。
  • 正如@GhostOps 提到的,您的字符串中没有' 可以替换。单引号是你的字符串。回答这个问题:" 是字符串"abc" 的一部分吗?您将如何检查 " 是否在该字符串中?您必须用引号将" 括起来才能将其视为字符串,是吗?像'"' in "abc" 这样的东西?你现在看到封闭的引号实际上不是字符串的一部分吗?

标签: python list replace


【解决方案1】:

好的,所以从您的 cmets 和您的其他帖子来看,似乎您拥有的是字符串,而您想要的是字典。我从另一篇文章中复制了你的数据,因为你在这篇文章中的数据不正确(你在这篇文章中缺少])。

解决方案

import json

batch = ['{"SageMakerOutput":[{"label":"LABEL_8","score":0.9152628183364868}],"inputs":"test"}',
         '{"SageMakerOutput":[{"label":"LABEL_8","score":0.9769203066825867}],"inputs":"Alles OK"}']

batch = [json.loads(b) for b in batch]

输出:

[{'SageMakerOutput': [{'label': 'LABEL_8', 'score': 0.9152628183364868}],
  'inputs': 'test'},
 {'SageMakerOutput': [{'label': 'LABEL_8', 'score': 0.9769203066825867}],
  'inputs': 'Alles OK'}]

说明

batch 中的那些对象就是所谓的JSON 对象。它们只是具有非常特定结构的字符串。它们类似于 Python 的 dict 类型,但有一些非常小的区别,并且可以使用 Python 的内置 json 模块很容易地转换为 Python dict 对象,该模块会自动转换 JSON 和 Python 之间的这些细微差别(例如,布尔值在 JSON 字符串中是 truefalse,但在 Python 中它们需要是 TrueFalse)。

注意事项

给 OP 和未来读者的建议:这篇文章是 XY problem 的经典案例。将来,请尝试更清楚地了解您的最终目标。您在这篇文章中的问题实际上无法回答,因为您无法按照您的要求进行操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    相关资源
    最近更新 更多