我刚开始使用 Python,我正在尝试制作一个程序,在从互联网“www....../lyrics.txt”打开的屏幕上写一首歌的歌词。 我的第一个代码:
import urllib.request
lyrics=urllib.request.urlopen("http://hereIsMyUrl/lyrics.txt")
text=lyrics.read()
print(text)
当我激活这个代码时,它没有给我网站上写的歌词,它在所有应该是新行的地方给了我新行命令 '\r\n' 并给了我所有的歌词都是一串乱七八糟的长串。例如: 这里有一些歌词\r\n这应该已经是下一行了\r\n等等。
我在互联网上搜索了用新行替换“\r\n”命令的代码,并尝试了以下操作:
import urllib.request
lyrics=urllib.request.urlopen("http://hereIsMyUrl/lyrics.txt")
text=lyrics.read()
text=text.replace("\r\n","\n")
print(text)
我希望它至少能取代一些东西,但它却给了我一个运行时错误:
TypeError: expected bytes, bytearray or buffer compatible object
我在 Internet 上搜索了有关该错误的信息,但没有找到与从 Internet 打开文件相关的任何内容。
我已经在这一点上停留了几个小时,不知道如何继续。 请帮忙! 提前致谢!
最佳答案
您的示例不起作用,因为 read
语句返回的数据是“字节对象”。您需要使用适当的编码对其进行解码。另请参阅 request.urlopen
的文档, file.read
和 byte array operations .
下面给出了一个完整的工作示例:
#!/usr/bin/env python3
import urllib.request
# Example URL
url = "http://ntl.matrix.com.br/pfilho/oldies_list/top/lyrics/black_or_white.txt"
# Open URL: returns file-like object
lyrics = urllib.request.urlopen(url)
# Read raw data, this will return a "bytes object"
text = lyrics.read()
# Print raw data
print(text)
# Print decoded data:
print(text.decode('utf-8'))
# If you still need newline conversion, you could use the following
text = text.decode('utf-8')
text = text.replace('\r\n', '\n')
print(text)
关于python - 如何使换行命令在从互联网打开的 .txt 文件中起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15772498/