首页 > 解决方案 > 如何使用 BeautifulSoup 放置文本

问题描述

我正在解析一个.xml文件。我需要转换为.csv个人文件:names.txt.

例如:

names.txt

anna
james
miray
vill

XML file:

<data>
    <AAA>
        <CCC>
            <person>name1</person>
        </CCC>
        <CCC>  
            <person>name2</person>
        </CCC>
        <CCC>
            <person>name3</person>
        </CCC>
    </AAA>
</data>

标签: pythonxmlbeautifulsoup

解决方案


你可以使用这个:

from bs4 import BeautifulSoup

example_string = '<data><AAA><CCC><person>name1</person></CCC><CCC><person>name2</person></CCC><CCC><person>name3</person></CCC></AAA></data>'

# Here I hard code the list of names. My assumption is you already know how
# to read the names from names.txt into a list.
names = ['anna', 'james', 'miray']

# Parse the XML into a BeautifulSoup
soup = BeautifulSoup(example_string, 'lxml-xml')

# Replace the content of each 'person' tag
for name, item in zip(names, soup.find_all('person')):
    item.string = name

# Pretty-print the XML after modifications
print(soup.prettify())

这将具有以下输出:

<?xml version="1.0" encoding="utf-8"?>
<data>
 <AAA>
  <CCC>
   <person>
    anna
   </person>
  </CCC>
  <CCC>
   <person>
    james
   </person>
  </CCC>
  <CCC>
   <person>
    miray
   </person>
  </CCC>
 </AAA>
</data>

推荐阅读