import os
from datetime import datetime, date
def convert_file(file_path):
with open(file_path) as file:
next(file)
weather={}
for line in file:
line = line.rstrip("\n")
x=line.split(",")
a=x[3]
b=[x[-2],x[-1],x[4]]
weather[a]=b
print(weather)
file.close()
file_path=os.getcwd()+"/weatherdata.csv"
convert_file(file_path)
{'"2010-07-03"': ['"68"', '"52"', '"0.00"'], '"1969-08-23"': ['"81"', '"54"', '"0.00"'], '"1983-07-10"': ['"69"', '"54"', '"0.00"'], '"1983-09-17"': ['"61"', '"49"', '"0.00"'], '"1964-04-22"': ['"50"', '"35"', '"0.33"']
如何使我的输出看起来像下面的示例输出?: 输出字典(天气):
{datetime.date(2017, 12, 10): [49, 34, 0.0],
datetime.date(2017, 12, 11): [49, 29, 0.0],
datetime.date(2017, 12, 12): [46, 32, 0.0],
答案 0 :(得分:0)
考虑使用csv
库解析CSV文件-现实中的CSV可能令人惊讶地复杂。
https://docs.python.org/3/library/csv.html
如果您走的是手动路径,请考虑将每一行贯穿
假设您的CSV格式正确(如果没有,使用库,则line.strip('"')
删除尾随的/前导引号,并用line.split('","')
或类似内容进行拆分以不将引号包括在中心) >)。
您可以使用int(x)
和float(x)
将字符串转换为数字:
b2 = [int(b[0]), int(b[1]), float(b[2])
之类的东西应该有所帮助。
您可以使用datetime.strptime(date_string, format)
将日期文本转换为日期时间对象-有关更多文档,请参见https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior,但我认为您需要%Y-%m-%d
作为格式字符串。
答案 1 :(得分:0)
更好地使用CSV模块处理csv文件。 但这应该有帮助...
import os
import ast
from datetime import datetime
def convert_file(file_path):
with open(file_path) as file:
next(file)
weather={}
for line in file:
line = line.rstrip("\n")
x=line.split(",")
a=x[3]
b=[x[-2],x[-1],x[4]]
weather[datetime.strptime(a, '"%Y-%m-%d"')]= [ast.literal_eval(i.replace('"', "")) for i in b]
print(weather)
file.close()
file_path=os.getcwd()+"/weatherdata.csv"
convert_file(file_path)
答案 2 :(得分:0)
您可以对ZnClient new
url: MyUrl;
uploadEntityfrom: FileLocator home /Path to the file;
put
, targetJObject.Merge(sourceJObject, new JsonMergeSettings
{
MergeArrayHandling = MergeArrayHandling.Union
});
targetJObject.Merge(sourceJObject, new JsonMergeSettings
{
MergeArrayHandling = MergeArrayHandling.Replace
});
和datetime.strptime
使用列表推导。您可以通过字符串切片来删除字符串中的双引号。
int
结果
float