我正在学习NLTk,我需要加载一个大文件,我不想把它保存在我的桌面上。我怎么能用网站上托管的python读取文件?
我在这里尝试了这段代码,但它不起作用,我假设openwith是它的rson,但我需要使用openwith,因为在这种情况下我需要将它保存为file-myfile。
import nltk
with open('http://www.sls.hawaii.edu/bley-vroman/brown.txt', 'r')as myfile:
data=myfile.read().replace('\n', 'r')
data2 = data.replace("/", "")
for i, in line in enummerate(data2.split('\n')):
if i>10:
break
print(str(i) + ':\t' + line)
这就是错误:
Traceback (most recent call last):
File "tut1.py", line 3, in <module>
with open('http://www.sls.hawaii.edu/bley-vroman/brown.txt', 'r')as myfile:
FileNotFoundError: [Errno 2] No such file or directory: 'http://www.sls.hawaii.edu/bley-vroman/brown.txt'
如何在脚本中使用该文件而不下载整个文件?
我更改了代码以处理请求
import nltk
import requests
myfile = requests.get('http://www.sls.hawaii.edu/bley-vroman/brown.txt')
data=myfile.read().replace('\n', 'r')
但是现在当我运行这个我得到这个错误:
Traceback (most recent call last):
File "tut1.py", line 6, in <module>
data=myfile.read().replace('\n', 'r')
AttributeError: 'Response' object has no attribute 'read'
有iter\u lines()
允许您逐行使用流媒体内容:
resp = requests.get('http://www.sls.hawaii.edu/bley-vroman/brown.txt', stream=True)
for i, l in enumerate(resp.iter_lines()):
if i < 10:
print(l) # use l.decode() to get string
else:
break
resp.close() # to not hang connection anymore
或者更简单:
for _, l in zip(range(10), resp.iter_lines()):
print(l) # use l.decode() to get string
或者最好的:
from itertools import islice
print(*islice(resp.iter_lines(), 10), sep="\n")
你可以访问它的内容。txt文件,没有如下错误:
import requests
myfile = requests.get('http://www.sls.hawaii.edu/bley-vroman/brown.txt')
data = myfile.text
如果您想处理文件的前N行(这里是10行),而不将整个响应读入内存,下面介绍了如何做到这一点:
import nltk
import requests
myfile = requests.get('http://www.sls.hawaii.edu/bley-vroman/brown.txt', stream=True).raw
for i in range(0, 10):
line = myfile.readline()
data = line.decode().replace('\\n', 'r')
print(data, end="")
结果:
富尔顿县大陪审团星期五说,对亚特兰大最近的初选进行的调查“没有证据”表明有任何违规行为发生。陪审团在期末陈述中进一步表示,负责此次选举的市执行委员会“应该得到亚特兰大市对选举进行方式的赞扬和感谢”。
富尔顿高等法院法官杜伍德·派伊(Durwood Pye)指控9月至10月任期的陪审团调查有关在艰苦的初选中可能出现“违规行为”的报道,该初选由富尔顿赢得
我修复的三个问题是:
请求。get()
不会返回类似文件的对象。添加。raw
获取该值,并将stream=True
添加到请求中以使其正确执行
当然,要处理10行而不是1行,您需要一个循环和一种只处理10行的方法。我也加了一句。我还添加了一个print()
调用,以便我们都能看到结果。
我假设代码中的replace()
并不是您真正想要的。我猜你的意思是replace('\\n','\\r')
,但因为我不确定(我不知道这能给你带来什么),所以我把它留给你处理。我确实对它进行了修复,这样它就不会通过在搜索词中添加第二个反斜杠来完全消除这一行(不知道它为什么这样做)。
我使用的代码是: 而网站代码为:
我正在编写一个程序,使用一个文件中的30个分数,计算出最低、最高和平均分数。我很难理解如何编写循环语句来读取每个等级并更新最低/最高等级,并在读取下一个等级之前将该值添加到总和。 谢谢想出来了:
=================================================================================== 2019-11-13 20:07:44.224 1004-1004/TransactionExecutor.java:68E/cklee:android.app.ActivityThread(H.handleMessage)Acti
我正在试着阅读我的文件的每一行,其中包含一个用户名列表,并用它创建一个登录系统。我正在尝试实现一个基本的登录系统,它的用户名存储在.txt文件中,但我的代码不工作,我不知道为什么。我认为问题出在检查用户名的循环中。 这是我的代码,但它不起作用,只是打印总是失败: 有什么想法吗?
所以,我试图让我的程序从文本文件中读入一个结构数组,它编译得很好,但看起来并没有真正读入值?...我不知道为什么。这是代码的相关部分: 这是txt文件(标题:Planets.txt) 水星120 50 500 12.1 30 2金星120 50 500 29.1 30 6地球120 50 500 32.2 30 7月亮120 15 50 5.3 30 2火星120 50 500 12.2 30 4
我目前有一个脚本,在将csv文件转换为. txt后,我用它来绘制该文件的一部分。此时,它工作得很好,除了当我将第0列中的日期更改为序数形式时(我已经这样做了,所以我可以将所有值作为浮点数读取并在第4列上执行计算),Python去掉了小时、分钟和秒。我仍然需要小时和分钟,因为当我绘制数据时,它绘制了我在一天开始时的所有点。有没有一种方法可以做到这一点,并保持时间以及日期?我尝试过将日期转换成字符串,