【问题标题】:import web based .txt file into python将基于 web 的 .txt 文件导入 python
【发布时间】:2020-10-31 04:23:41
【问题描述】:

我认为这很简单,但我没有找到有效的答案。数据导入似乎有效,但下面没有分隔“/”数字的代码。感谢您的帮助。

import urllib.request
opener = urllib.request.FancyURLopener({})
url = "http://jse.amstat.org/v22n1/kopcso/BeefDemand.txt"
f = opener.open(url)
content = f.read()
# below are the 3 different ways I tried to separate the data
content.encode('string-escape').split("\\x")
content.split('\r')
content.split('\\') 

【问题讨论】:

  • 能否提供您正在使用的变量“content”的样本?
  • 网络拉取的开始在 Out[265] 下面:b'Year\tChickPrice\tBeefPrice\tBeefConsump\tCPI\tDPI\tRealChickenPrice\tRealBeefPrice\tRealDPI\t\t(RDPI-Mean)^ sq\n1965\t37.24500733\t59.5\t\t99.5\t\t31.5\t2505\t118.2381185\t\t188.8888889\t7952.380952\t63240362.81\n1966\t39.44150776\ t62.2\t\t104.1\t\t32.4\t2675\t121.7330486\t\t191.9753086\t8256.17284\t68164389.96\n1967\t36.38550716\t60.7\t\t106。 5\t\t33.4\t2828\t108.9386442\t\t181.7365269\t8467.065868\t71691204.42\n1968\t38.00900748\t63.5\t\t109.7\t\t34.8\ t3037\t109.2212859\
  • “内容”是从网址中提取的数据

标签: python data-import


【解决方案1】:

只需使用csv.readercsv.DictReader 即可解析内容。确保将分隔符设置为制表符,在这种情况下:

import requests
import csv
import re

url = "http://jse.amstat.org/v22n1/kopcso/BeefDemand.txt"

response = requests.get(url)
response.raise_for_status()

text = re.sub("\t{1,}", "\t", response.text)

reader = csv.DictReader(text.splitlines(), delimiter="\t")
for row in reader:
    print(row)

在这种情况下,我更喜欢csv.DictReader,因为它会为您消耗标题行,并且每个“行”都是一个字典。您的特定文本文件有时会使用重复的选项卡分隔字段以使其看起来更漂亮,因此您必须以某种方式考虑到这一点。在我的 sn-p 中,我使用正则表达式将所有选项卡簇替换为单个选项卡。

【讨论】:

    【解决方案2】:

    我强烈推荐Pandas 来阅读和分析这种文件。它支持直接从 url 读取,并提供有意义的分析能力。

    import pandas
    url = "http://jse.amstat.org/v22n1/kopcso/BeefDemand.txt"
    
    df = pandas.read_table(url, sep="\t+", engine='python', index_col="Year")
    

    请注意,您在该文件中有多个重复的制表符作为分隔符,由sep="\t+" 处理。重复也意味着你必须使用 python 引擎。

    现在文件已读入数据框,我们可以进行简单的绘图,例如:

    df[['ChickPrice', 'BeefPrice']].plot()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-30
      • 2014-04-24
      • 2010-10-05
      • 1970-01-01
      • 2015-08-26
      • 2015-08-10
      • 1970-01-01
      相关资源
      最近更新 更多