Как включить текст из тега внутри тега. питон - PullRequest
0 голосов
/ 18 марта 2019

Я столкнулся с проблемой при разборе XML с использованием BeautifulSoap и Python.

Например, часть содержимого XML, представленного ниже:

xml = '''<line b="498" baseline="488" l="520" r="1248" t="456">
     <formatting lang="EnglishUnitedStates">
       $
      <price appendorder="10" class="extraction-tag" confidence="1/1" data-original-title="Price" data-toggle="tooltip" data-value="25.00" style="background-color: rgb(192, 185, 178);" tagorder="10">
       25.00
      </price>
      .
     </formatting>
    </line>'''

soup = BeautifulSoup(xml, "lxml-xml")
tag = soup.price
tag['data-value'] = "$25.00"
tag.string = "$25.00"
outside_tag_str = str(tag.find_parent())
new_outside_tag_str = outside_tag_str.replace("$<", "<")
print(new_outside_tag_str)


#prints: <formatting lang="EnglishUnitedStates">
      $
      <price appendorder="10" class="extraction-tag" confidence="1/1" data-original-title="Price" data-toggle="tooltip" data-value="$25.00" style="background-color: rgb(192, 185, 178);" tagorder="10">$25.00</price>
      .
     </formatting>

Как видите, я хочу включить знак доллара в тег, но мой код возвращает знак доллара внутри и снаружи тега. Что я делаю не так? Я хочу, чтобы меня вернули:

<formatting lang="EnglishUnitedStates">
  <price appendorder="10" class="extraction-tag" confidence="1/1" data-original-title="Price" data-toggle="tooltip" data-value="$25.00" style="background-color: rgb(192, 185, 178);" tagorder="10">$25.00</price>
  .
 </formatting>

Любая помощь будет принята с благодарностью, спасибо.

1 Ответ

0 голосов
/ 18 марта 2019

Заменить это :

new_outside_tag_str = outside_tag_str.replace("$<", "<")

с этим :

new_outside_tag_str = outside_tag_str.replace(" $", "")

Почему?

Поскольку вам нужно точно заменить $ (пробел, за которым следует знак доллара) пустой строкой, ранее вы пытались найти недопустимую строку.

Следовательно

xml = '''<line b="498" baseline="488" l="520" r="1248" t="456">
     <formatting lang="EnglishUnitedStates">
       $
      <price appendorder="10" class="extraction-tag" confidence="1/1" data-original-title="Price" data-toggle="tooltip" data-value="25.00" style="background-color: rgb(192, 185, 178);" tagorder="10">
       25.00
      </price>
      .
     </formatting>
    </line>'''

soup = BeautifulSoup(xml, "lxml-xml")
tag = soup.price
tag['data-value'] = "$25.00"
tag.string = "$25.00"
outside_tag_str = str(tag.find_parent())
new_outside_tag_str = outside_tag_str.replace(" $", "")
print(new_outside_tag_str)

OUTPUT

<formatting lang="EnglishUnitedStates">

      <price appendorder="10" class="extraction-tag" confidence="1/1" data-original-title="Price" data-toggle="tooltip" data-value="$25.00" style="background-color: rgb(192, 185, 178);" tagorder="10">$25.00</price>
      .
     </formatting>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...