Каков простой способ обработки строки, которая содержит одинарные кавычки внутри двойных кавычек или в противном случае? - PullRequest
1 голос
/ 14 июня 2019

Я использую python3.6.

Мне нужно обработать строку, полученную при разборе текстового файла, обычно, как правило, есть случаи, которые содержат двойные кавычки в строке. Поэтому я использую замену для обработки дела.

Но я сталкиваюсь с новой проблемой, которая заключается в пустой строке "''" в кавычках в поле файла.

например.

a = '"This is the double quotes in the string"'
# I can handle this simply by
a.replace('"', '')

# But when string is like
b = "''"
b.replace('"', '')
print(b)
>> "''"

#It's ok if I use
b.replace("'", "")
print(b)
>> ""

Но я хотел бы спросить, есть ли хороший / простой способ обрабатывать два случая a и b одновременно.

1 Ответ

2 голосов
/ 14 июня 2019

Вы можете использовать re.sub , который соответствует одинарным или двойным кавычкам через регулярное выражение r"[\"\']" и заменяет их пустой строкой

In [5]: re.sub(r"[\"\']",'','"This is the double quotes in the string"')                                                                                                                                                  
Out[5]: 'This is the double quotes in the string'

In [6]: re.sub(r"[\"\']",'',"''")                                                                                                                                                                                         
Out[6]: ''

In [10]: re.sub(r"[\"\']",'','""')                                                                                                                                                                                        
Out[10]: ''

Другой подход с использованием string.replace, где мы заменяем одинарные и двойные кавычки пустой строкой

In [4]: def replace_quotes(s): 
   ...:  
   ...:     return s.replace('"','').replace("'","") 
   ...:                                                                                                                                                                                                                   

In [5]: replace_quotes("This is the double quotes in the string")                                                                                                                                                         
Out[5]: 'This is the double quotes in the string'

In [6]: replace_quotes("''")                                                                                                                                                                                              
Out[6]: ''

In [7]: replace_quotes('""')                                                                                                                                                                                              
Out[7]: ''
...