Python 从网站解析XML并保存代码?

Python 从网站解析XML并保存代码?,python,xml,python-3.5,Python,Xml,Python 3.5,我想从一个类似的网站解析xml代码 并将其保存在另一个xml或csv文件中 我试过这个: import urllib.request web_data = urllib.request.urlopen("http://ops.epo.org/3.1/rest-services/published-data/publication/docdb/EP1000000/biblio") str_data = web_data.read() try: f = open("file.xml", "w

我想从一个类似的网站解析xml代码 并将其保存在另一个xml或csv文件中

我试过这个:

import urllib.request 
web_data = urllib.request.urlopen("http://ops.epo.org/3.1/rest-services/published-data/publication/docdb/EP1000000/biblio")
str_data = web_data.read()
try:
   f = open("file.xml", "w")
   f.write(str(str_data))
   print("SUCCESS")
except:
   print("ERROR")
但在保存的XML中,数据位于每个元素“\n”和开头的“b”之间

在没有所有“n”和“b”的情况下,如何保存XML数据?

read()
将数据返回为
字节
,但您可以保存数据,而无需转换为
str()
。您必须以
byte
模式打开文件-
“wb”
-并写入数据

import urllib.request

web_data = urllib.request.urlopen("http://ops.epo.org/3.1/rest-services/published-data/publication/docdb/EP1000000/biblio")
data = web_data.read()

try:
   f = open("file.xml", "wb")
   f.write(data)
   print("SUCCESS")
except:
   print("ERROR")
顺便说一下:要将
字节
转换为
字符串/unicode
,您必须使用ie.
解码('utf-8')

如果您使用
str()
,那么Python使用自己的方法来创建字符串,并添加
b“
若要通知您的
数据中有
字节
,如果您以二进制模式编写xml文件,则无需先将读取的数据转换为字符串。另外,如果您一次处理一行数据,应该可以解决
'\n'
问题。您的代码的逻辑结构也可以稍微好一点,如下所示:

import urllib.request

web_data = urllib.request.urlopen("http://ops.epo.org/3.1/rest-services"
                                  "/published-data/publication"
                                  "/docdb/EP1000000/biblio")
data = web_data.read()
with open("file.xml", "wb") as f:
    for line in data:
        try:
            f.write(data)
        except Exception as exc:
            print('ERROR')
            print(str(exc))
            break
    else:
        print('SUCCESS')

如果您的
stru数据实际上是一个字符串,您是否尝试过简单地替换您不想要的特定字符?在Python 3
read()
中,您必须使用
decode()
将其转换为字符串/unicode-您不能使用
str()
。或者最好以
'wb'
的形式打开文件,在不使用
str()的情况下写入数据
-
f.write(str\u数据)