Python: как преобразовать каждое начало и конец строки в двойную кавычку, а затем удалить или заменить двойную внутри одинарной?

#python #regex

Вопрос:

У меня есть список строк, подобных этой:

 [ "sentence_1", 'sentence_2 of "me"']
 

Я бы хотел, чтобы это:

 [ "sentence_1", "sentence_2 of 'me'"]
 

или:

 [ "sentence_1", "sentence_2 of me"]
 

Я пробовал регулярное выражение, но оно не работает:

 for i in list:
    i.replace({'"':''}, regex=True).replace({"'":' '}, regex=True)
 

Я не знаю, как это решить

Комментарии:

1. Нет необходимости в регулярных выражениях. Вы не присваиваете результат str.replace() . Строки неизменяемы; str.replace() метод возвращает новый str объект, и вы ничего не делаете с этой возвращаемой строкой.

2. Являются ли начальные/конечные кавычки на самом деле частью строки?

3. @john-гордон начальные/конечные кавычки не являются частью строки

Ответ №1:

Если вы хотите полностью избавиться от кавычек, вы можете это сделать

 mylist = [ "sentence_1", 'sentence_2 of "me"']
[x.replace('"', '').replace("'", '') for x in mylist]
 

который использует понимание списка для удаления всех одинарных и двойных кавычек и приводит к

 ['sentence_1', 'sentence_2 of me']
 

Если вы хотите заменить все двойные кавычки одинарными кавычками,

 [x.replace('"', "'") for x in mylist]
 

будет возвращать

 ['sentence_1', "sentence_2 of 'me'"]