【问题标题】:Remove \n in a dictionary python在字典python中删除\ n
【发布时间】:2020-01-22 13:46:38
【问题描述】:

我的字典看起来像:

{'values_changed': {'root': {'new_value': '{\n "quiz": {\n "sport": {\n "q1": {\n "question": "Which one is correct team name in NBA?",\n "options": [\n "New York Bulls",\n "Los Angeles Kings",\n "Golden Staxx000xxxte Warriros",\n "Huston Rocket"\n ],\n "answer": "Huston Rocket"\n }\n },\n "maths": {\n "q1": {\n "questxxx000xxcion": "5 + 7 = ?",\n "options": [\n "10",\n "11",\n "12",\n "13"\n ],\n "answer": "12"\n },\n "qx0000xx2": {\n "question": "12 - 8 = ?",\n "options": [\n "1",\n "2",\n "3",\n "4"\n ],\n "answer": "4"\n }\n }\n }\n}', 'old_value': '{\n "quiz": {\n "sport": {\n "q1": {\n "question": "Which one is correct team name in NBA?",\n "options": [\n "New York Bulls",\n "Los Angeles Kings",\n "Golden Staxxxxxte Warriros",\n "Huston Rocket"\n ],\n "answer": "Huston Rocket"\n }\n },\n "maths": {\n "q1": {\n "questxxxxxcion": "5 + 7 = ?",\n "options": [\n "10",\n "11",\n "12",\n "13"\n ],\n "answer": "12"\n },\n "qxxx2": {\n "question": "12 - 8 = ?",\n "options": [\n "1",\n "2",\n "3",\n "4"\n ],\n "answer": "4"\n }\n }\n }\n}', 'diff': '--- \n+++ \n@@ -6,7 +6,7 @@\n "options": [\n "New York Bulls",\n "Los Angeles Kings",\n- "Golden Staxxxxxte Warriros",\n+ "Golden Staxx000xxxte Warriros",\n "Huston Rocket"\n ],\n "answer": "Huston Rocket"\n@@ -14,7 +14,7 @@\n },\n "maths": {\n "q1": {\n- "questxxxxxcion": "5 + 7 = ?",\n+ "questxxx000xxcion": "5 + 7 = ?",\n "options": [\n "10",\n "11",\n@@ -23,7 +23,7 @@\n ],\n "answer": "12"\n },\n- "qxxx2": {\n+ "qx0000xx2": {\n "question": "12 - 8 = ?",\n "options": [\n "1",'}}} 

我需要从中删除 \n;我试过 strip() 不工作。

如何从字典中删除 \n 以使我的字典如下所示。

{'values_changed': {'root': {'new_value': '{ "quiz": {"sport": {  "q1": {  "question": "Which one is correct team name in NBA?",  "options":[  "New York Bulls",  "Los Angeles Kings",  "Golden Staxx000xxxte Warriros",  "Huston Rocket"  ],  "answer": "Huston Rocket"  }  },  "maths": {  "q1": {  "questxxx000xxcion": "5 + 7 = ?",  "options": [  "10",  "11",  "12",  "13"  ],  "answer": "12"  },  "qx0000xx2": {  "question": "12 - 8 = ?",  "options": [  "1",  "2",  "3",  "4"  ],  "answer": "4"  }  }  } }', 'old_value': '{  "quiz": {  "sport": {  "q1": {  "question": "Which one is correct team name in NBA?",  "options": [  "New York Bulls",  "Los Angeles Kings",  "Golden Staxxxxxte Warriros",  "Huston Rocket"  ], "answer": "Huston Rocket"  }  },  "maths": {  "q1": {  "questxxxxxcion": "5 + 7 = ?",  "options": [  "10",  "11",  "12",  "13"  ],  "answer": "12"  },  "qxxx2": {  "question": "12 - 8 = ?",  "options": [  "1",  "2",  "3",  "4"  ],  "answer": "4"  }  }  } }', 'diff': '---  +++  @@ -6,7+6,7 @@  "options": [  "New York Bulls",  "Los Angeles Kings", - "Golden Staxxxxxte Warriros", + "Golden Staxx000xxxte Warriros",  "Huston Rocket"  ], "answer": "Huston Rocket" @@ -14,7 +14,7 @@  },  "maths": {  "q1": { - "questxxxxxcion": "5 + 7 = ?", + "questxxx000xxcion": "5 + 7 = ?",  "options":[  "10",  "11", @@ -23,7 +23,7 @@  ],  "answer": "12"  }, - "qxxx2": { + "qx0000xx2": {  "question": "12 - 8 = ?",  "options": [  "1",'}}} 

【问题讨论】:

  • 字典没有嵌套的换行符。您似乎有一个 JSON 格式的字符串,您可以将其 解码dict.
  • 您能否将示例更改为复制您的问题的最少代码量?
  • 你能确认@chepner问了什么吗?

标签: python python-3.x dictionary


【解决方案1】:

您可以使用递归来替换所有嵌套的字符串值,例如:

def remove_n(d):
    for k in d.keys():
        if type(d[k]) == str:
            d[k] = d[k].replace('\n', '')
        elif type(d[k]) == dict:
            remove_n(d[k])

d={'values_changed': {'root': {'new_value': '{\n "quiz": {\n "sport": {\n "q1": {\n "question": "Which one is correct team name in NBA?",\n "options": [\n "New York Bulls",\n "Los Angeles Kings",\n "Golden Staxx000xxxte Warriros",\n "Huston Rocket"\n ],\n "answer": "Huston Rocket"\n }\n },\n "maths": {\n "q1": {\n "questxxx000xxcion": "5 + 7 = ?",\n "options": [\n "10",\n "11",\n "12",\n "13"\n ],\n "answer": "12"\n },\n "qx0000xx2": {\n "question": "12 - 8 = ?",\n "options": [\n "1",\n "2",\n "3",\n "4"\n ],\n "answer": "4"\n }\n }\n }\n}', 'old_value': '{\n "quiz": {\n "sport": {\n "q1": {\n "question": "Which one is correct team name in NBA?",\n "options": [\n "New York Bulls",\n "Los Angeles Kings",\n "Golden Staxxxxxte Warriros",\n "Huston Rocket"\n ],\n "answer": "Huston Rocket"\n }\n },\n "maths": {\n "q1": {\n "questxxxxxcion": "5 + 7 = ?",\n "options": [\n "10",\n "11",\n "12",\n "13"\n ],\n "answer": "12"\n },\n "qxxx2": {\n "question": "12 - 8 = ?",\n "options": [\n "1",\n "2",\n "3",\n "4"\n ],\n "answer": "4"\n }\n }\n }\n}', 'diff': '--- \n+++ \n@@ -6,7 +6,7 @@\n "options": [\n "New York Bulls",\n "Los Angeles Kings",\n- "Golden Staxxxxxte Warriros",\n+ "Golden Staxx000xxxte Warriros",\n "Huston Rocket"\n ],\n "answer": "Huston Rocket"\n@@ -14,7 +14,7 @@\n },\n "maths": {\n "q1": {\n- "questxxxxxcion": "5 + 7 = ?",\n+ "questxxx000xxcion": "5 + 7 = ?",\n "options": [\n "10",\n "11",\n@@ -23,7 +23,7 @@\n ],\n "answer": "12"\n },\n- "qxxx2": {\n+ "qx0000xx2": {\n "question": "12 - 8 = ?",\n "options": [\n "1",'}}}

remove_n(d)

【讨论】:

    【解决方案2】:

    试试这个:

    d = {'values_changed': {'root': {'new_value': '{\n "quiz": {\n "sport": {\n "q1": {\n "question": "Which one is correct team name in NBA?",\n "options": [\n "New York Bulls",\n "Los Angeles Kings",\n "Golden Staxx000xxxte Warriros",\n "Huston Rocket"\n ],\n "answer": "Huston Rocket"\n }\n },\n "maths": {\n "q1": {\n "questxxx000xxcion": "5 + 7 = ?",\n "options": [\n "10",\n "11",\n "12",\n "13"\n ],\n "answer": "12"\n },\n "qx0000xx2": {\n "question": "12 - 8 = ?",\n "options": [\n "1",\n "2",\n "3",\n "4"\n ],\n "answer": "4"\n }\n }\n }\n}', 'old_value': '{\n "quiz": {\n "sport": {\n "q1": {\n "question": "Which one is correct team name in NBA?",\n "options": [\n "New York Bulls",\n "Los Angeles Kings",\n "Golden Staxxxxxte Warriros",\n "Huston Rocket"\n ],\n "answer": "Huston Rocket"\n }\n },\n "maths": {\n "q1": {\n "questxxxxxcion": "5 + 7 = ?",\n "options": [\n "10",\n "11",\n "12",\n "13"\n ],\n "answer": "12"\n },\n "qxxx2": {\n "question": "12 - 8 = ?",\n "options": [\n "1",\n "2",\n "3",\n "4"\n ],\n "answer": "4"\n }\n }\n }\n}', 'diff': '--- \n+++ \n@@ -6,7 +6,7 @@\n "options": [\n "New York Bulls",\n "Los Angeles Kings",\n- "Golden Staxxxxxte Warriros",\n+ "Golden Staxx000xxxte Warriros",\n "Huston Rocket"\n ],\n "answer": "Huston Rocket"\n@@ -14,7 +14,7 @@\n },\n "maths": {\n "q1": {\n- "questxxxxxcion": "5 + 7 = ?",\n+ "questxxx000xxcion": "5 + 7 = ?",\n "options": [\n "10",\n "11",\n@@ -23,7 +23,7 @@\n ],\n "answer": "12"\n },\n- "qxxx2": {\n+ "qx0000xx2": {\n "question": "12 - 8 = ?",\n "options": [\n "1",'}}} 
    

    这个值是一个字符串,如果你想把它转换成一个dict/json你可以:

    d["values_changed"]["root"]["new_value"] = simplejson.loads(d["values_changed"]["root"]["new_value"])
    

    你可以为old_value做类似的事情

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 2014-09-02
      • 1970-01-01
      相关资源
      最近更新 更多