【问题标题】:Slicing and Replacing Unicode String Characters切片和替换 Unicode 字符串字符
【发布时间】:2013-06-25 08:41:23
【问题描述】:

我尝试使用以下循环替换 unicode 字符串中的字符。我为此循环获取的数据格式如下:YYYY-MM-DD HH:MM:SS

这些数据显然是以 UTC 格式存储的,所以当我抓取它并将这些时间和日期附加到我的列表 appts_list 时,它会提前 4 小时。

我已经完成了对 unicode 字符串进行切片并对这些字符进行数学运算并得到了我需要的正确时间,但是我在将其恢复为字符串时遇到了问题,因此我可以编写它加入我的名单appts_list。

当我尝试将正确小时的整数 time_slice_int 写回原始字符串时,我收到了 TypeError。我决定尝试将整个字符串放入一个列表并在那里更改它们,但这也不起作用。

理想情况下,我希望将“2013-06-28 15:30:00”的约会以“2013-06-28 11:30:00”输入我的appts_list。

打印语句可供我在运行时进行调试。它们不是最终版本所必需的。

有人有什么建议或解决办法吗?

for appt in todays_appts:
        time = appt['apptdateourtime_c']
        time_slice = time[11:13]
        time_slice_int = int(time_slice)
        time_slice_int -= 4
        print(time_slice_int)
        appt_time = list(time)
        print(appt_time)
        print(appt_time[11:13])
        #appt_time[11:13] = time_slice_int
        #appts_list.append()
        print('AppointmentScheduled')
        #print(appt['apptdateourtime_c'])
        #print(time)
        print('')

【问题讨论】:

    标签: python python-2.7 unicode slice


    【解决方案1】:

    您应该在这里使用datetime 模块:

    >>> from datetime import datetime, timedelta
    >>> strs = '2013-06-28 15:30:00'
    >>> d = datetime.strptime(strs, "%Y-%m-%d %H:%M:%S")
    

    datetime.strptime 返回一个日期时间对象:

    >>> d
    datetime.datetime(2013, 6, 28, 15, 30)
    >>> d.hour
    15
    >>> d.month
    6
    

    现在使用timedelta 将上述日期时间对象(d)减少 4 小时并将新对象分配给一个变量:

    >>> d1 = d - timedelta(hours = 4)
    

    现在使用datetime.strftime 获取所需格式的字符串:

    >>> datetime.strftime(d1,"%Y-%m-%d %H:%M:%S")
    '2013-06-28 11:30:00'
    

    【讨论】:

    • 我可以像这样使用 unicode 对象吗:appt_time = datetime.datetime(appt['apptdateourtime_c'])
    • 谢谢。我不知道datetime.strptime!你能告诉我为什么我会得到 2013-06-28T08:30:00 作为结果吗?它在里面放了一个“T”。
    • @novafluxx 甚至我也不确定你为什么会在那里收到T。
    • 没问题。我知道我完全错了。我喜欢标准库。我会阅读strftime() and strptime() Behavior
    • @novafluxx 我不这么认为,您可以使用encode 将该字符串编码为普通字符串。 appt['apptdateourtime_c'].encode('ascii') 再试一次。如果您的问题仍未解决,请发布新问题。 `
    猜你喜欢
    • 2019-01-29
    • 2014-12-03
    • 1970-01-01
    • 2020-11-27
    • 2019-05-18
    • 1970-01-01
    • 2018-11-26
    • 2019-01-24
    • 2021-03-02
    相关资源
    最近更新 更多