簡體   English   中英

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

[英]How to split a string and update the dictionary in csv file in python?

所以我有一個CSV文件,里面帶有庫存數據,格式為:

日期,“打開”,“高”,“低”

2012-11-14,660.66,662.18,123.4

我已成功將所有相關數據轉換為正確的變量類型,即所有Open值均為浮點數,High為浮點數,date為字符串

到目前為止,這是我的代碼:

    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)

如何刪除每個日期值,以便在日期值中沒有“-”? 然后將它們轉換為整數? 我嘗試使用日期時間,但我無法真正理解它。

消除- S和轉換生成的字符串為整數可能不會幫助你。 您將絕對要使用DateTime ,更具體地說是strptime:

類方法datetime。 strptime (date_string,格式)

返回對應於date_string的datetime,並根據格式進行解析。 這等效於datetime(*(time.strptime(date_string,format)[0:6]))。 如果無法通過time.strptime()解析date_string和format或返回的值不是時間元組,則會引發ValueError。 有關格式設置指令的完整列表,請參見strftime()和strptime()行為部分。

例如:

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

另外,您似乎有一個財務時間序列。 無需讀取CSV並進行手動解析。 熊貓恰恰可以很好地滿足您的需求。

由於數據保存在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM