小编Kev*_*vin的帖子

你为什么需要lambda来嵌套defaultdict?

我有点困惑为什么你需要一个lambda函数来嵌套defaultdict

为什么你不能这样做?

test = defaultdict(defaultdict(list))
Run Code Online (Sandbox Code Playgroud)

代替

test = defaultdict(lambda:defaultdict(float))
Run Code Online (Sandbox Code Playgroud)

python lambda defaultdict

6
推荐指数
1
解决办法
247
查看次数

如何在python中确定过去的时区特定日期是否为夏令时?

有没有办法在我指定的日期检查特定时区是否在夏令时?

    test_dt = datetime(year=2015, month=2, day=1)
    pst = pytz.timezone('America/Los_Angeles')
    test_dt = pst.localize(test_dt) 

    # should return False
    is_day_light_saving(test_dt)        
Run Code Online (Sandbox Code Playgroud)

python time timezone datetime

6
推荐指数
1
解决办法
3140
查看次数

循环遍历 mongoengine Document 中的所有字段并检查每个字段是否为特定类型且 is_required 的方法

这是使用 mongoengine 的文档中的一些字段

_id     = f.ObjectIdField(db_field="i", required=True)
name    = f.StringField(db_field="n")
Run Code Online (Sandbox Code Playgroud)

我想循环遍历文档中的每个字段,看看它们是否为 XField 类型并且 is_required 为 True,有没有办法做到这一点?

我知道你可以使用列出所有字段_fields

for field in SomeDocument._fields:
    print type(field) # always return 'str' not 'StringField' or 'ObjectField'

    # Don't know how to check is_required
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激。

python mongodb mongoengine

5
推荐指数
1
解决办法
3461
查看次数

python中的time.mktime时区是免费的吗?

我试图理解纪元的本质及其行为。下面我尝试使用 2 个不同时区特定日期时间和 1 个天真的日期时间来执行相同的日期

import time
import pytz
from datetime import datetime, timedelta

pst = pytz.timezone('America/Los_Angeles')
t = datetime(year=2015, month=2, day=2)
t = pst.localize(t)
time.mktime(t.timetuple()) 
# outputs 1422864000.0


utc = pytz.utc
k = datetime(year=2015, month=2, day=2)
k = utc.localize(k)
time.mktime(k.timetuple())
# outputs 1422864000.0




o = datetime(year=2015, month=2, day=2)
time.mktime(o.timetuple())
# outputs 1422864000.0
Run Code Online (Sandbox Code Playgroud)

它们都具有相同的纪元,但这令人惊讶,因为太平洋标准时间 (PST) 中的相同日期应相对于 UTC (UTC) 偏移 7 小时。有人可以解释一下吗?

谢谢

python time timezone datetime epoch

5
推荐指数
1
解决办法
1万
查看次数

如何使用 python 将当地时间 (PDT) 转换为 PST

如果我想转换时区,通常我会执行以下操作

# local interpreted as pst to utc

utc = pytz.utc
pst = pytz.timezone('America/Los_Angeles')


start_time_str = time.strftime('%Y-%m-%d %H:%M:%S', \
  time.localtime(start_time))
start_time_datetime = \
  datetime.datetime.strptime(start_time_str, "%Y-%m-%d %H:%M:%S")

start_time_datetime = \
  start_time_datetime.replace(tzinfo=pst).astimezone(utc)
Run Code Online (Sandbox Code Playgroud)

现在我想做类似的事情,比如我想将本地时间转换为 pst

localtime = datetime.datetime.fromtimestamp(time.mktime(
            time.localtime()))
Run Code Online (Sandbox Code Playgroud)

我不太确定你将如何实现这一目标

任何帮助,将不胜感激

python time timezone datetime

3
推荐指数
1
解决办法
1万
查看次数

如何允许编码('utf-8')两次而不会在python中出错?

我有一个遗留代码段,encode('utf-8')当我传入一个unicode字符串(直接来自数据库)时总是对我来说,是否有办法将unicode字符串更改为其他格式以允许它再次编码为'utf-8'而无需获取错误,因为我不允许更改遗留代码段.

我先尝试解码它,但它返回此错误

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

如果我将unicode字符串保留为返回状态

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 986: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

如果我将遗留代码更改为不起作用encode('utf-8'),但这不是一个可行的选择

编辑:

这是代码片段

#!/usr/bin/env python2
# -*- coding: utf-8 -*-



if __name__ == "__main__":
   # 1
   a = u'??'
   # 2
   a = a.decode('utf-8')
   # 3
   a.encode('utf-8')
Run Code Online (Sandbox Code Playgroud)

出于某种原因,如果我跳过,#2我没有得到上面提到的错误,我仔细检查字符串的类型,它似乎都是unicode,两个是相同的字符,但我正在处理的代码不允许我编码或解码utf-8,而某些片段中的相同字符允许我这样做.

python unicode encoding utf-8

-1
推荐指数
1
解决办法
881
查看次数