分析python3.5中逗号分隔的联机文本文件

2024-10-04 05:26:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我想这是两个问题的组合-阅读在线文本文件,然后将结果解析成列表。我尝试了下面的代码,它可以将文件读入字节文件,但不能转换成列表

import urllib
CFTC_URL = r"http://www.cftc.gov/dea/newcot/FinFutWk.txt"
CFTC_url = urllib.request.urlopen(CFTC_URL)
output = CFTC_url.read().decode('utf-8')

Tags: 文件代码importhttpurl列表字节www
3条回答

假设您想将文件解释为一个表,那么您需要首先使用split来获取行。然后,您可以通过再次拆分每一行来获得列。在

import urllib.request
CFTC_URL = r"http://www.cftc.gov/dea/newcot/FinFutWk.txt"
CFTC_url = urllib.request.urlopen(CFTC_URL)
output = CFTC_url.read().decode('utf-8')
lines = output.split("\r\n"))) # split on newline
print(lines[0]) # first line "CANADIAN DOLLAR ..."
columns_0 = lines[0].split(",") # split on ,
print(columns[0]) # first column of first line

然后,您可以迭代行列表,对于行中的每个条目,您可以遍历列。在

与其尝试解析url中的每一行并将其放入csv文件的特定行中,您只需将其全部放入文本文件中以清理格式设置,然后从中读回,这看起来似乎更管用,但这通常是我从url获取逗号分隔信息的方法。在

import requests
URL = "http://www.cftc.gov/dea/newcot/FinFutWk.txt"
r = requests.get(URL,stream=True)
with open('file.txt','w') as W:
    W.write(r.text)
with open('file.txt', 'r') as f:
    lines = f.readlines()

for line in  lines:
    print(line.split(','))

您可以获取forloop中的内容,并将其交换以实际将列表保存到一个列表数组中,这样您就可以使用而不是打印它们。在

^{pr2}$

还请注意,在拆分时,您仍然会注意到,有些内容后面有大量空白,您可以针对数组中的每个列表运行整个列表,并删除所有空白,但这会破坏列表中的第一个元素,或者只需将具有空白的数值转换为实际的整数,因为它们是作为字符串读入的。那是你的喜好。如果您有任何问题,请随时在下面添加评论。在

编辑1: 另外,如果不希望保留与内容一起保存的文件,请导入os库,然后在将行读入lines数组后,删除该文件。在

import os
os.remove('file.txt')

您可以将standartcsv模块与StringIO包装器一起用于文件内容(例如,requests库用于获取数据):

import requests, io, csv

CFTC_URL = r"http://www.cftc.gov/dea/newcot/FinFutWk.txt"
data = io.StringIO(requests.get(CFTC_URL).text)

dialect = csv.Sniffer().sniff(data.read(1024))
data.seek(0)
reader = csv.reader(data, dialect)
for row in reader:
    print(row)

相关问题 更多 >