如何在python中拆分字符串并更新csv文件中的字典?

时间:2015-11-11 13:23:18

标签: python csv dictionary strip

所以我有一个csv文件,里面有库存数据,格式为:

日期,“开放”,“高”,“低”

2012-11-14,660.66,662.18,123.4

我已成功将所有相关数据转换为正确的变量类型,即所有Open值都是浮点数,High是浮点数,日期是字符串

到目前为止,这是我的代码:

    types = [ ("Date", str), ("Open",float), ("High", float),
      ("Low", float), ("Close", float), ("Volume", int), ("Adj Close", float) ]

    with open("googlePrices.csv") as f:
        for row in csv.DictReader(f):  # read a row as {col1: val1, col2: val2..}
            row.update((key, conversion(row[key])) for key, conversion in types)

如何删除每个日期值,以便日期值中没有“ - ”?然后将它们转换为整数?我试图使用日期时间但我无法理解它。

2 个答案:

答案 0 :(得分:0)

消除-并将结果字符串转换为整数可能对您没有帮助。你绝对想要使用DateTime,更具体地说是strptime:

  

classmethod datetime。 strptime (date_string,format)

     

返回与date_string对应的日期时间,根据进行解析   格式。这相当于datetime(*(time.strptime(date_string,   格式)[0:6]))。如果是date_string和format,则引发ValueError   time.strptime()无法解析或者返回值   不是时间元组。有关格式化指令的完整列表,请参阅   section strftime()和strptime()Behavior。

e.g:

datetime.datetime.strptime('2012-11-14','%Y-%m-%d')
#datetime.datetime(2012, 11, 14, 0, 0)

此外,您似乎有一个财务时间序列。无需读取CSV并手动解析。 Pandas完全符合您的需求。

答案 1 :(得分:0)

由于数据保存在csv文件中,读取后它们只是字符串,如果Date的格式是固定的,那么只需删除-

types = [ ("Date", int), ("Open",float), ("High", float),
      ("Low", float), ("Close", float), ("Volume", int), ("Adj Close", float) ]

rowlist = []

with open("googlePrices.csv") as f:
    for row in csv.DictReader(f):
        row['Date'] = row['Date'].replace('-','')
        try:
            row.update((key, conversion(row[key])) for key, conversion in types)
        except KeyError:
            continue 
        rowlist.append(row)

输出:

>>> print rowlist
[{'Date': 20121114, 'High': 662.18, 'Open': 660.66, 'Low': 123.4}]

如果您想将Date转换为timestamp,请使用此选项:

>>>time.mktime(time.strptime('2012-11-14', '%Y-%m-%d'))
1352822400.0