- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图找出处理以下数据的最佳方法。我正在抓取一个站点并使用文本 (.prn) 文件(用于打印的文件,这是包含我想要的数据的文件,我认为这会比 Adobe Acrobat 文件更好)来收集数据。我的问题是当我将数据导入 python 时:数据一次一个字母垂直向下进入屏幕,所以即使有多行,这些数据也只是流入一列。我想知道是否有人会知道如何以更“传统”的方式输入数据,我可以在其中引入行 [0]、行 [1] 等......
这是我的代码,以防万一(您还可以看到我尝试过的其他一些功能)。
import os
import urllib
import urllib2
import string
import sys
import os
from bs4 import BeautifulSoup
import csv
import mechanize
from numpy import*
import datetime
import traceback
from pylab import*
site="http://www.treasurydirect.gov/govt/reports/pd/mspd/mspd.htm"
br = mechanize.Browser()
br.set_handle_equiv(False)
br.open(site)
print 'br.title',br.title()
allforms = list(br.forms())
br.form = allforms[0]
br.follow_link(text_regex="February", nr=0)
#br.click_link(text='February', nr=0) # this works to
#next page
print br.title()
allforms = list(br.forms())
print allforms
br.form = allforms[0]
getstuff=br.click_link(text="Text (.prn)", nr=0) # this works to
#getstuff= br.click_link(text="Adobe Acrobat (.pdf)", nr=0) Adobe Acrobat (.pdf)
br.open(getstuff)
csvData=br.response().read() # use read to BeautifulSoup(x)
#site = BeautifulSoup(csvData)
#print site
for row in csvData:
print row[0]
最佳答案
读取带有漂亮汤的文本文件似乎会返回 csvData 中的单个字符串,而不是您期望的行列表。因此,对字符串进行迭代会在每个迭代步骤中返回一个字符。这就是为什么您的文本似乎转置为单列的原因。
首先,你似乎根本不需要漂亮的汤!您正在检索文本文件,而不是 HTML 文件。 Beautiful Soup 是一个 HTML/XML 解析器。 Mechanize 对我来说似乎也没有必要(我见过 your previous question 但实际上,您不需要解析 HTML 页面来发现链接,因为您已经知道最终 url)。
对我来说,你应该把算法分成三部分:
import urllib2, re
def get_data_text(month, year):
"""given a month and a year, this method returns the raw data file (as a list of rows)"""
url_pattern = 'http://www.treasurydirect.gov/govt/reports/pd/mspd/{year:4d}/opds{month:02d}{year:4d}.prn'
url = url_pattern.format(month=month, year=year)
source = urllib2.urlopen(url)
data = source.readlines()
source.close()
return data
def keep_only_interesting_rows(data, interesting_rows):
"""filter data rows in order to keep only the ones that start with strings in interesting_rows list"""
return [line for line in data if any([line.strip().startswith(ir) for ir in interesting_rows])]
def convert_data_to_dict(data):
"""converts every row in data to a dictionary element """
return {re.sub('\.*\s*$', '', el[0:46]).strip():(int(el[47:63].replace(',','')), int(el[69:90].replace(',','')), int(el[95:115].replace(',',''))) for el in data}
interesting_rows = ['Bills', 'Notes', 'Total Public Debt Outstanding'] # add the initial part of any row you are interested at (without leading spaces)
mytext = get_data_text(2, 2013) # gets the text for feb, 2013 as rows
data = keep_only_interesting_rows(mytext, interesting_rows) # filter rows
final_data = convert_data_to_dict(data) # convert remaining rows into a dict
print final_data
print final_data['Bills'][2] # this gives you the third column
# >>> {'Notes': (7416574, 5888, 7422462), 'Bills': (1738404, 3546, 1741950), 'Total Public Debt Outstanding': (11822436, 4864853, 16687289)}
# >>> 1741950
mytext = get_data_text(9, 2012) # this time let's get the text for September, 2012
print mytext[0]
MONTHLY STATEMENT OF THE PUBLIC DEBT
关于python - 格式化文本 (.prn) 文件中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15558252/
我想使用 Java 生成 .prn 文件。 是否有可用的 java api? 现在生成 .PRN 文件是否有任何值(value)(我的应用程序是一个基于 Web 的应用程序,试图模仿现有的客户端/服务
我试图找出处理以下数据的最佳方法。我正在抓取一个站点并使用文本 (.prn) 文件(用于打印的文件,这是包含我想要的数据的文件,我认为这会比 Adobe Acrobat 文件更好)来收集数据。我的
如果您尝试将任何数据集保存到“PRN.rData”,您将收到错误消息: d<- data.frame(D=NA, K=NA) save(d, file="E:/PRN.rData") Error in
我正在尝试创建一个名为 PRN.json 的空白文件。由于某种原因 createNewFile() 没有创建它,也没有抛出异常。当我尝试手动创建具有相同名称的文件时,我收到“指定的设备名称无效”。有什
我正在尝试确定打印作业或 .prn 文件是否已完成写入计算机。创建步骤:单击文件上的打印 -> 并选择(打印到文件)该文件将尝试保存在您计算机上的某个位置,然后将打开一个窗口以输入文件名和保存位置。输
Scapy 的sniff-function 中的参数prn 是什么的缩写吗? 我知道是用来给嗅探包定义一个callback-function的,就是找不到prn的意思。 我在 documentatio
我通过将 bash 设置为打开 .sh 文件的默认应用程序,在 Windows 命令提示符下执行 shell 脚本。我可以在没有输入参数的情况下运行任何脚本,但是对于那些带有输入参数的脚本,我收到错误
我正在将一些 Visual Basic 6.0 代码转换为 C#。该代码处理获取预生成的 PRN 文件并将这些文件发送到打印机。 但是我对如何使用 C# 执行此操作感到有点困惑。我看过 PrintDo
我需要一种算法,可以将任何文件格式转换为它的 .PRN 文件等效文件,这将与特定打印机兼容(例如,仅在 CANON 打印机中)。 或者我需要源代码或方法来了解打印机驱动程序的工作原理。打印机驱动程序是
我有一个“.prn”文件,我想在本地连接的打印机上打印相同的文件。如何将“.prn”文件发送到打印机?我如何使用 QT 实现此目的? 最佳答案 在开始执行后添加等待完成 QProcess *proce
我有一个创建 PDF 文件的 JAVA 程序。但是我需要通过 SDK 将这个 PDF 文件发送到打印机,因为这台打印机只接受 PRN 文件类型...... 我知道 PRN 文件是通过使用特定打印机的特
超级批处理: 复制代码 代码如下: DEL /F /A /Q \\?\%1 RD /S /Q \\?\%1 文件-另存为"统统删除.bat" (名字叫什么都可以,不过后
我想知道如何在 APEX 的按钮下调用 proc。以下是我执行的步骤:- 在应用程序中添加空白页- 添加按钮 exp。在该地区以下-为按钮添加动态操作 PL/SQL-选择执行 PL/SQL 等操作-在
我们有一堆 .prn 文件。这些文件不会在 Zebra Designer 中打开。 有没有办法将 .prn 转换为 .lbl 文件,以便它们在设计器软件中打开? 我尝试将 .prn 重命名为 .lbl
我尝试运行一个 python 程序,并在命令提示符中弹出以下内容: “无法初始化设备 PRN” 我还应该提到该程序运行良好。 最佳答案 当我不小心输入“ print program.py”而不是“ p
// extract data from .prn 我如何从打印机生成的哑 .prn 文件 (pcl6) 中提取数据 使用java或任何其他语言。有没有这样的java Api,比如 用于读取 pdf
我很好奇命令提示符为以下命令返回的错误消息: C:\>md prn The directory name is invalid. C:\>md con The directory name is in
代码如下: namespace TrimTest { class Program { static void Main(string[] args) {
我正在通过 php 为打印机生成 prn 文件并将它们发送到打印机进行打印 COPY filename.prn /B \\ComputerName\NetworkPrinterName 仅供引用,此命
我是一名优秀的程序员,十分优秀!