Обрезанный файл парсера BeautifulSoup lxml

Я использую BeautifulSoup с python 3.4 для анализа XML-файла. Мой код выглядит следующим образом:

from lxml import etree
from bs4 import BeautifulSoup
import psycopg2
import sys
import configparser
import re

with open(informationFileName) as infoFP:
        infoTableSoup = BeautifulSoup(infoFP, "xml")

infoTableSoupFileName.write(infoTableSoup.prettify())

informationFileName содержит следующую строку текста:

<?xml version = "1.0" encoding = "ISO-8859-1" standalone = "no"?><informationTable xmlns:ns1 = "http://www.sec.gov/edgar/common" xmlns:ns11 = "http://www.sec.gov/edgar/statecodes" xmlns = "http://www.sec.gov/edgar/document/thirteenf/informationtable" xsi:schemaLocation = "http://www.sec.gov/edgar/common eis_Common.xsd http://www.sec.gov/edgar/statecodes eis_stateCodes.xsd http://www.sec.gov/edgar/document/thirteenf/informationtable eis_13FDocument.xsd" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"><infoTable><nameOfIssuer>1ST SOURCE CORP</nameOfIssuer><titleOfClass>COM</titleOfClass><cusip>336901103</cusip><value>166</value><shrsOrPrnAmt><sshPrnamt>3364</sshPrnamt><sshPrnamtType>SH</sshPrnamtType></shrsOrPrnAmt><investmentDiscretion>SOLE</investmentDiscretion><otherManager>1</otherManager><votingAuthority><Sole>3364</Sole><Shared>0</Shared><None>0</None></votingAuthority></infoTable></informationTable>
</XML>
</TEXT>
</DOCUMENT>
</SEC-DOCUMENT>

К сожалению, весь текст в одной строке. Когда я запускаю эту программу, предварительно настроенный xml усекается следующим образом:

<?xml version = "1.0" encoding = "utf-8"?>
<informationTable xmlns:ns1 = "htt"/>

Однако, если я отформатирую xml перед тем, как перейти к следующему, то он будет предварительно настроен правильно.

<?xml version = "1.0" encoding = "ISO-8859-1" standalone = "no"?><informationTable xmlns:ns1 = "http://www.sec.gov/edgar/common" xmlns:ns11 = "http://www.sec.gov/edgar/statecodes" xmlns = "http://www.sec.gov/edgar/document/thirteenf/informationtable" xsi:schemaLocation = "http://www.sec.gov/edgar/common eis_Common.xsd http://www.sec.gov/edgar/statecodes eis_stateCodes.xsd http://www.sec.gov/edgar/document/thirteenf/informationtable eis_13FDocument.xsd" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance">
    <infoTable>
        <nameOfIssuer>1ST SOURCE CORP</nameOfIssuer>
        <titleOfClass>COM</titleOfClass>
        <cusip>336901103</cusip>
        <value>166</value>
        <shrsOrPrnAmt>
            <sshPrnamt>3364</sshPrnamt>
            <sshPrnamtType>SH</sshPrnamtType>
        </shrsOrPrnAmt>
        <investmentDiscretion>SOLE</investmentDiscretion>
        <otherManager>1</otherManager>
        <votingAuthority>
            <Sole>3364</Sole>
            <Shared>0</Shared>
            <None>0</None>
        </votingAuthority>
    </infoTable>
</informationTable> 
</XML> </TEXT> </DOCUMENT> </SEC-DOCUMENT>

Почему это так? Я ничего не делаю, кроме добавления новых строк. Я думал, что BeautifulSoup не должен заботиться о форматировании файла.

Ваш код Python не содержит ничего, что печатает или показывает результат синтаксического анализа. Пожалуйста, редактировать и добавьте код, который вы используете и который генерирует усеченный вывод.

user9455968 01.05.2018 14:54

Это недопустимый экземпляр xml, это неправильный </XML> </TEXT> </DOCUMENT> </SEC-DOCUMENT>, в нем нет таких открывающих тегов,

Luis Muñoz 02.05.2018 01:55

@ mluis7 Даже если вынуть </XML> </TEXT> </DOCUMENT> </SEC-DOCUMENT>, он все равно не работает. Это была одна из первых вещей, которые я попробовал.

ks1124 02.05.2018 12:40
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
3
90
0

Другие вопросы по теме