靓汤不能应付一个大的fi

2024-09-29 02:27:12 发布

您现在位置:Python中文网/ 问答频道 /正文

每一个包含数百万个简单的XML文件

    <MusicAlbum>
      <MusicType>P</MusicType>
      <Title>22 Exitos de Oro [Brentwood]</Title>
      <Performer>Chayito Valdéz</Performer>
    </MusicAlbum>
...
    <MusicAlbum>
      <MusicType>A</MusicType>
      <Title>Bye Bye</Title>
      <Performer>Emma Aster</Performer>
    </MusicAlbum>

我可以在Python中很好地读取和加载文件,但是当我把它传递给Beautifulsoup时

^{pr2}$

我明白了

Converting to Soup
Killed

很明显,杀死的是一些能美化照片的东西。
一种解决方案是将html分解成块,每个块包含信息“MusicAlbum”和“/MusicAlbum”块,然后将它们传递给Beautifulsoup,但只想确定是否有更简单的解决方案。在


Tags: 文件titledexml解决方案byebeautifulsouporo
1条回答
网友
1楼 · 发布于 2024-09-29 02:27:12

检查这是否对您有效,它不会很快,但不应使用超过您需要的内存:

# encoding:utf-8
import re

data = """    <MusicAlbum>
      <MusicType>P</MusicType>
      <Title>22 Exitos de Oro [Brentwood]</Title>
      <Performer>Chayito Valdéz</Performer>
    </MusicAlbum>
...
    <MusicAlbum>
      <MusicType>A</MusicType>
      <Title>Bye Bye</Title>
      <Performer>Emma Aster</Performer>
    </MusicAlbum>"""

MA = re.compile(r'<MusicAlbum>(.*?)</MusicAlbum>', re.DOTALL)
TY = re.compile(r'<MusicType>(.*)</MusicType>')
TI = re.compile(r'<Title>(.*)</Title>')
P = re.compile(r'<Performer>(.*)</Performer>')

albums = []
for album in re.findall(MA, data):
    albums.append({
        'type': re.search(TY, album).group(),
        'title': re.search(TI, album).group(),
        'performer': re.search(P, album).group()})


print albums

相关问题 更多 >