Python日期字符串mm/dd/yyyy到datetime

Python日期字符串mm/dd/yyyy到datetime,python,string,datetime,Python,String,Datetime,我必须写一个程序,在那里我从雅虎金融公司(yahoo finance)获取股票,并为网站打印某些信息。其中一条数据是日期。我需要将日期(如2012年3月21日)转换为以下格式:2012年3月21日 这是我整个项目的代码 def getStockData(company="GOOG"): baseurl ="http://quote.yahoo.com/d/quotes.csv?s={0}&f=sl1d1t1c1ohgvj1pp2owern&e=.csv" ur

我必须写一个程序,在那里我从雅虎金融公司(yahoo finance)获取股票,并为网站打印某些信息。其中一条数据是日期。我需要将日期(如2012年3月21日)转换为以下格式:2012年3月21日

这是我整个项目的代码

def getStockData(company="GOOG"):

    baseurl ="http://quote.yahoo.com/d/quotes.csv?s={0}&f=sl1d1t1c1ohgvj1pp2owern&e=.csv"

    url = baseurl.format(company)
    conn = u.urlopen(url)
    content = conn.readlines()
    data = content[0].decode("utf-8")
    data = data.split(",")
    date = data[2][1:-1]
    date_new = datetime.strptime(date, "%m/%d/%Y").strftime("%B[0:3] %d, %Y")
    print("The last trade for",company, "was", data[1],"and the change was", data[4],"on", date_new)


company = input("What company would you like to look up?")
getStockData(company)


co = ["VOD.L", "AAPL", "YHOO", "S", "T"]
for company in co:
    getStockData(company)

您应该真正指定您的代码哪些地方不起作用(即,您得到了哪些您不期望的输出?您得到了哪些错误消息(如果有的话))。但是,我怀疑您的问题在于此部分:

strftime('%B[0:3] %d, %Y')
因为Python不会像您所想的那样尝试切片
“%B”
。您应该改为使用
“%b”
,它对应于区域设置缩写的月份名称


编辑

这是一个功能齐全的脚本,基于您在上面发布的内容和我建议的修改:

import urllib2 as u
from datetime import datetime

def getStockData(company="GOOG"):
    baseurl ="http://quote.yahoo.com/d/quotes.csv?s={0}&f=sl1d1t1c1ohgvj1pp2owern&e=.csv"

    url = baseurl.format(company)
    conn = u.urlopen(url)
    content = conn.readlines()
    data = content[0].decode("utf-8")
    data = data.split(",")
    date = data[2][1:-1]
    date_new = datetime.strptime(date, "%m/%d/%Y").strftime("%b %d, %Y")
    print("The last trade for",company, "was", data[1],"and the change was", data[4],"on", date_new)

for company in ["VOD.L", "AAPL", "YHOO", "S", "T"]:
    getStockData(company)
此脚本的输出为:

The last trade for VOD.L was 170.00 and the change was -1.05 on Mar 06, 2012
The last trade for AAPL was 530.26 and the change was -2.90 on Mar 06, 2012
The last trade for YHOO was 14.415 and the change was -0.205 on Mar 06, 2012
The last trade for S was 2.39 and the change was -0.04 on Mar 06, 2012
The last trade for T was 30.725 and the change was -0.265 on Mar 06, 2012

值得一提的是,我在Python2.7.1上运行它。我还使用了uuu future uuuuu导入打印uu函数的
一行,以使其与您似乎正在使用的Python3打印函数兼容。

您应该真正指定您的代码不起作用的原因(即,您得到了哪些您不期望的输出?您得到了什么错误消息,如果有的话?)。但是,我怀疑您的问题在于此部分:

strftime('%B[0:3] %d, %Y')
因为Python不会像您所想的那样尝试切片
“%B”
。您应该改为使用
“%b”
,它对应于区域设置缩写的月份名称


编辑

这是一个功能齐全的脚本,基于您在上面发布的内容和我建议的修改:

import urllib2 as u
from datetime import datetime

def getStockData(company="GOOG"):
    baseurl ="http://quote.yahoo.com/d/quotes.csv?s={0}&f=sl1d1t1c1ohgvj1pp2owern&e=.csv"

    url = baseurl.format(company)
    conn = u.urlopen(url)
    content = conn.readlines()
    data = content[0].decode("utf-8")
    data = data.split(",")
    date = data[2][1:-1]
    date_new = datetime.strptime(date, "%m/%d/%Y").strftime("%b %d, %Y")
    print("The last trade for",company, "was", data[1],"and the change was", data[4],"on", date_new)

for company in ["VOD.L", "AAPL", "YHOO", "S", "T"]:
    getStockData(company)
此脚本的输出为:

The last trade for VOD.L was 170.00 and the change was -1.05 on Mar 06, 2012
The last trade for AAPL was 530.26 and the change was -2.90 on Mar 06, 2012
The last trade for YHOO was 14.415 and the change was -0.205 on Mar 06, 2012
The last trade for S was 2.39 and the change was -0.04 on Mar 06, 2012
The last trade for T was 30.725 and the change was -0.265 on Mar 06, 2012
值得一提的是,我在Python2.7.1上运行它。我还使用了uu future uuu导入打印u函数中的行
,使其与您似乎正在使用的Python3打印函数兼容。

签出。您可以使用它将字符串解析为python datetime对象,然后使用strftime打印该对象

从那以后,我得出了一个结论:自动检测日期时间值并不总是一个好主意。最好使用
strtime
并指定所需的格式。

签出。您可以使用它将字符串解析为python datetime对象,然后使用strftime打印该对象


从那以后,我得出了一个结论:自动检测日期时间值并不总是一个好主意。最好使用
strtime
并指定所需的格式。

这就是我遇到的错误:“回溯(最近一次调用):文件“F:\I211\a4.py”,第44行,在getStockData(公司)文件“F:\I211\a4.py”第39行,在getStockData date\u new=datetime.strtime(日期,%m/%d/%Y”).strftime(%B[0:3]%d,%Y”)中AttributeError:“模块”对象没有属性“strtime”@user1251230:听起来文件中有一行类似于
import datetime
。将其从datetime import datetime更改为
,这将把
datetime
类导入为
datetime
,而不是datetime模块。这就是我得到的错误:“回溯(最近一次调用):文件“F:\I211\a4.py”,第44行,在getStockData(公司)文件“F:\I211\a4.py”中,第39行,在getStockData date\u new=datetime.strTime(日期,“%m/%d/%Y”).strftime(“%B[0:3]%d,%Y”)属性错误:“模块”对象没有属性“strTime”“@user1251230:听起来您的文件中有一行类似于
import datetime
。将其从datetime import datetime更改为
,这将把
datetime
类作为
datetime
而不是datetime模块导入。