Почему этот код не удаляет мою обратную косую черту в Python? - PullRequest
0 голосов
/ 05 июля 2019

У меня есть блок кода в формате строки.Имя переменной my_string выглядит следующим образом:

'<div class="section page-centered"><div><b style="font-size: 24px">About 
Us</b></div><div>At <a href="https://close.com/" class="postings- 
link">Close</a>, we\'re building the sales
communication platform of the future. With our roots as the very first 
sales CRM to include built-in calling, we\'re leading the industry toward 
eliminating manual processes and helping compa
nies to close more deals (faster). Since our founding in 2013, we\'ve 
grown to become a profitable, 100% globally distributed team of ~33 high- 
performing, happy people that are dedicated to b
uilding a product our customers love. </div>'

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

new_string = my_string.replace("\\", "")

Но я просто получаю тот же результат.Что я тут не так делаю?

Ответы [ 2 ]

3 голосов
/ 05 июля 2019

Обратная косая черта на самом деле экранирует одинарные кавычки. Если я напечатаю строку, я получу:

print('<div class ... </div>')

<div class="section page-centered"><div><b style="font-size: 24px">About Us</b></div><div>At <a href="https://close.com/" class="postings- link">Close</a>, we're building the salescommunication platform of the future. With our roots as the very first sales CRM to include built-in calling, we're leading the industry toward eliminating manual processes and helping companies to close more deals (faster). Since our founding in 2013, we've grown to become a profitable, 100% globally distributed team of ~33 high- performing, happy people that are dedicated to building a product our customers love. </div>

0 голосов
/ 05 июля 2019

Я не совсем уверен, почему он работает на некоторых машинах, но, по крайней мере, у меня есть такая проблема:

  • Обратная реакция, сопровождаемая чем-то, на самом деле не является обратной реакцией, если толькодвойной люфт:

как

back_lash="hi\myname\is\backlash"
print(back_lash)

Это приведет к выводу:

hi\myname\iacklash

Это легче увидеть в интегрированной среде разработки, которая может его закрасить.

Example

Так что, как видите, это совершенно особый символ.То же самое, что вы сделали в своей замене с двойным люфтом

Как сказано в здесь , это затруднительно.Символ обратной косой черты ("\") используется для экранирования символов, которые в противном случае имеют особое значение, таких как символ новой строки, сам обратный слеш или символ кавычки.Вы можете использовать префикс r или R:

Строковые литералы могут иметь префикс с буквой 'r' или 'R';такие строки называются необработанными строками и используют разные правила для интерпретации escape-последовательностей с обратной косой чертой.

r"Some string with \ backslash"

Взгляните на this , они упоминают:

Youнеобходимо экранировать обратную косую черту, поставив перед ней, да, другую обратную косую черту. \ символ называется escape-символом, который по-разному интерпретирует следующий за ним символ.Например, n само по себе является просто буквой, но когда вы ставите перед ней обратную косую черту, она становится \ n, что является символом новой строки.

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

...