Considerar:
>>> r"what"ever"
SyntaxError: invalid syntax
>>> r"what\"ever"
'what\\"ever'
Então, como obtemos a citação, mas não a barra?
E, por favor, não sugira r'what"ever', porque então a questão é: como incluímos os dois tipos de citações?
Considerar:
>>> r"what"ever"
SyntaxError: invalid syntax
>>> r"what\"ever"
'what\\"ever'
Então, como obtemos a citação, mas não a barra?
E, por favor, não sugira r'what"ever', porque então a questão é: como incluímos os dois tipos de citações?
Respostas:
Se quiser usar aspas duplas em strings, mas não aspas simples, você pode usar aspas simples como delimitador:
r'what"ever'
Se você precisar dos dois tipos de aspas em sua string, use uma string entre aspas triplas:
r"""what"ev'er"""
Se você quiser incluir os dois tipos de strings com aspas triplas em sua string (um caso extremamente improvável), você não pode fazer isso e terá que usar strings não brutas com escapes.
r"raw string"e C #'s @"@-quoted string"e"""triple quotes"""
r'what"ever"um erro de análise? Você quis dizer r'what"ever'?
Se precisar de qualquer tipo de citação (simples, dupla e tripla para ambos), você pode "combinar" (0) as strings:
>>> raw_string_with_quotes = r'double"' r"single'" r'''double triple""" ''' r"""single triple''' """
>>> print raw_string_with_quotes
double"single'double triple""" single triple'''
Você também pode "combinar" (0) strings brutas com strings não brutas:
>>> r'raw_string\n' 'non-raw string\n'
'raw_string\\nnon-raw string\n'
(0): Na verdade, o analisador Python une as strings e não cria várias strings. Se você adicionar o operador "+", várias strings serão criadas e combinadas.
Como tropecei nessa resposta, e ela me ajudou muito, mas encontrei um pequeno problema sintático, achei que deveria evitar a possível frustração dos outros. A string entre aspas triplas funciona para este cenário conforme descrito, mas observe que se o "que você deseja na string ocorrer no final da própria string:
somestr = """This is a string with a special need to have a " in it at the end""""
Você encontrará um erro na execução porque as "" "" (4) aspas consecutivas confundem o leitor de string, pois ele pensa que já atingiu o fim da string e encontra um "aleatório". Você pode validar isso inserindo um espaço entre as 4 aspas assim: "" "" e não terá o erro.
Neste caso especial, você precisará usar:
somestr = 'This.....at the end"'
ou use o método descrito acima para construir várias strings com "e 'misto e então concatená-las após o fato.
Usar:
dqote='"'
sqote="'"
Use o operador '+' dqotee as squotevariáveis para obter o que você precisa.
Se eu quiser sed -e s/",u'"/",'"/g -e s/^"u'"/"'"/, você pode tentar o seguinte:
dqote='"'
sqote="'"
cmd1="sed -e s/" + dqote + ",u'" + dqote + "/" + dqote + ",'" + dqote + '/g -e s/^"u' + sqote + dqote + '/' + dqote + sqote + dqote + '/'