Как заменить определенный символ из значений dicts в списке? - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь заменить определенный символ из указанного списка, но получаю эту ошибку:

AttributeError: 'list' object has no attribute 'replace'

Как мне решить эту проблему?

String=[{"id":"id1 \n\n","key2 \n":"value2","key3":"value3"},{"id":"id2","key2":"value2","key3":"value3"},{"id":"id3","key2":"value2","key3":"value3't"}]

new_str = String.replace('\n', '')

new_str = String.replace("'", '')
print new_str

Ответы [ 3 ]

0 голосов
/ 13 октября 2018

То, что у вас есть list из dictionaries, а не string, вам нужно пройтись по keys и values в каждом словаре, чтобы выполнить

lst = [{k.strip(): v.strip().replace("'","") for k, v in i.items()} for i in lst]
# [{'id': 'id1', 'key2': 'value2', 'key3': 'value3'}, {'id': 'id2', 'key2': 'value2', 'key3': 'value3'}, {'id': 'id3', 'key2': 'value2', 'key3': 'value3t'}]

Expanded

res = []
for i in lst:
    x = {}
    for k, v in i.items():
        x[k.strip()] = v.strip().replace("'","")
    res.append(x)
print(res)
0 голосов
/ 13 октября 2018

У вас есть массив словарей.поэтому нам нужно сначала выполнить итерацию массива.затем нам нужно создать новый словарь с исправленными ключами и значениями, а затем заполнить словарь новыми элементами.

    String=[{"id":"id1 \n\n","key2 \n":"value2","key3":"value3"},{"id":"id2","key2":"value2","key3":"value3"},{"id":"id3","key2":"value2","key3":"value3't"}]

for dic in String: 'iterating the array
    newdic = {} 'a new dictionary to stroe corrected pairs
    for item in dic.items():
        'making a new pair with corrected key and value
        key = item[0].replace('\n', '').replace("'", '')
        val = item[1].replace('\n', '').replace("'", '')
        newdic.update({key:val})
    ' now replace the dictionary items
    dic.clear()
    dic.update(newdic) 
0 голосов
/ 13 октября 2018

Строка в вашем вопросе фактически является списком элементов словаря.И списки также не имеют метода замены.Так что это не сработает.Так как вы хотите заменить новые строки каждого ключа и значения, вы должны выполнить итерацию по каждому элементу списка и каждой паре ключ-значение dict и заменить новые строки в строке.

list_of_dicts = [{"id" : "id1 \n\n", "key2 \n" : "value2", "key3" : "value3"},{"id" : "id2", "key2" : "value2", "key3" : "value3"},{"id" : "id3", "key2" : "value2", "key3" : "value3't"}
    ]

new_list_of_dicts = [dict([(key.replace("\n", ""), dict1[key].replace("\n", "")) for key in dict1]) for dict1 in list_of_dicts]

print new_list_of_dicts

Выход:

[{'key3': 'value3', 'key2 ': 'value2', 'id': 'id1 '}, {'key3': 'value3', 'key2': 'value2', 'id': 'id2'}, {'key3': "value3't", 'key2': 'value2', 'id': 'id3'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...