【问题标题】:Numpy - loadtxt and using converter for dateNumpy - loadtxt 并使用转换器获取日期
【发布时间】:2013-09-23 20:38:26
【问题描述】:

我想加载一个格式如下的txt:

20-Sep-13,178.90,185.83,178.56,183.39,13401689
19-Sep-13,170.80,180.47,169.08,177.92,15594568
18-Sep-13,167.07,167.45,164.20,166.22,5439615
17-Sep-13,165.08,168.42,163.36,166.23,5500719

因此我使用以下 Python 行:

date, closep, highp, lowp, openp, volume = np.loadtxt(stockFile, delimiter=',', unpack=True, converters={0: mdates.strpdate2num('%d-%b-%y')})

但我收到以下错误:

failed main loop time data '\xef\xbb\xbf20-Sep-13' does not match format '%d-%b-%y'

有谁知道,我做错了什么?

谢谢, 麦基

【问题讨论】:

  • 看起来您的文本文件在每行的开头都有一些额外的字符(“\xef\xbb\xbf”)。我不确定这些字符是什么格式。你能重新生成你的文本文件来排除这些吗?

标签: python numpy


【解决方案1】:

文本文件包含 UTF-8 BOM 字符。 numpy.loadtxt 不接受 encoding,但你可以传递 iterable 而不是文件名。

尝试以下操作:

stockFile = '....'


import numpy as np
import matplotlib.dates as mdates
import codecs

with codecs.open(stockFile, encoding='utf-8-sig') as f:
    date, closep, highp, lowp, openp, volume = np.loadtxt(f, delimiter=',', unpack=True, converters={0: mdates.strpdate2num('%d-%b-%y')})

【讨论】:

    猜你喜欢
    • 2018-03-30
    • 2017-12-21
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    相关资源
    最近更新 更多