2017-01-08 2 views
0

Я просто хочу изменить текст внутри тега xml после того, как он станет объектом BeautifulSoup.BeautifulSoup4: изменить текст внутри тега xml

Текущий код:

example_string = '<conversion><person>John</person></conversion>' 
bsoup = BeautifulSoup(example_string) 
bsoup.person.text = 'Michael' 

работает этот код в моей консоли делает эту ошибку:

Traceback (most recent call last): 
    File "<stdin>", line 3, in <module> 
AttributeError: can't set attribute 

Как я могу изменить значение внутри person тегов XML?

ответ

0

Вы должны установить .string attribute, не .text, который доступен только для чтения:

example_string = '<conversion><person>John</person></conversion>' 
bsoup = BeautifulSoup(example_string, "xml") 
bsoup.person.string = 'Michael' 

Демо:

In [1]: from bs4 import BeautifulSoup 
    ...: 
    ...: 
    ...: example_string = '<conversion><person>John</person></conversion>' 
    ...: bsoup = BeautifulSoup(example_string, "xml") 
    ...: bsoup.person.string = 'Michael' 
    ...: 
    ...: print(bsoup.prettify()) 
    ...: 
<?xml version="1.0" encoding="utf-8"?> 
<conversion> 
<person> 
    Michael 
</person> 
</conversion> 
+0

спасибо за помощь, работает отлично – Paul