小编Dav*_*d Z的帖子

如何在Python中获得人类可读的时区名称?

在我正在开发的Python项目中,我希望能够获得一个"人类可读"的时区名称,其形式为America/New_York,对应于系统本地时区,以显示给用户.我看到的访问时区信息的每一段代码只返回数字偏移量(-0400)或字母代码(EDT),有时两者都返回.是否有一些Python库可以访问这些信息,如果没有,可以将偏移/字母代码转换为人类可读的名称?

如果有一个以上对应于特定时区的人类可读名称,则可能结果列表或其中任何一个都可以,如果没有与当前时区对应的人类可读名称,我将采取无论是异常或None[]或什么的.

python timezone

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

从mod_python转换为mod_wsgi

我的网站是用Python编写的,目前在Apache的mod_python下运行.最近我不得不加入一些让我认为可能值得将网站转换为mod_wsgi的丑陋黑客.但我已经习惯了使用一些mod_python的的工具类的,特别是FieldStorageSession(有时Cookie),并从扫描PEP 333,我看不出有任何等同于这些.(这并不奇怪,因为我了解这些实用程序不属于WSGI规范)

问题是,我可以在WSGI中使用这些mod_python实用程序类的"标准"(即通常接受的)替换,还是我/我应该自己编写?

(仅供参考:目前正在使用Python 2.5)

python mod-wsgi mod-python

11
推荐指数
1
解决办法
5384
查看次数

如何自定义LaTeX中对子列表的引用?

我的LaTeX文档中有一个列表/子列表结构.默认情况下,子列表用字母分隔,因此您最终得到:

1. Item
    (a) sub item
    (b) sub item
Run Code Online (Sandbox Code Playgroud)

在我的文档中,我有超过26个子项,所以我遇到了一个计数器溢出错误,我通过重写子项标签来修复,所以它们现在看起来像这样

1. Item
    1.1 sub item
    1.2 sub item
Run Code Online (Sandbox Code Playgroud)

我在其中一个项目上放了一个标签,以便我稍后可以参考具体步骤.问题是,在渲染引用时,它使用字母而不是子项的编号进行渲染.

这是一个显示问题的示例文档.

\documentclass[11pt]{report}

\begin{document}

\renewcommand{\labelenumii}{\arabic{enumi}.\arabic{enumii}}

\begin{enumerate}
    \item Item
    \begin{enumerate}
        \item \label{lbl} Label here
    \end{enumerate}
\end{enumerate}

Ref: \ref{lbl}

\end{document}
Run Code Online (Sandbox Code Playgroud)

这会像这样呈现:

1. Item
    1.1 Label here
Ref: 1a
Run Code Online (Sandbox Code Playgroud)

所以不是说"Ref:1.1",而是使用"Ref:1.a".有没有办法让\ ref使用源枚举的编号?如果没有,无论如何都要生成对超过26个项目的子列表中项目的正确引用?

latex pdflatex

11
推荐指数
1
解决办法
8559
查看次数

分配给命名组的Python正则表达式

当你在python正则表达式中使用变量(是正确的单词吗?)时:"blah(?P\w +)"("value"将是变量),你怎么能让变量的值成为"之后的文本" blah"到行尾或某个字符没有注意变量的实际内容.例如,这是我想要的伪代码:

>>> import re
>>> p = re.compile("say (?P<value>continue_until_text_after_assignment_is_recognized) endsay")
>>> m = p.match("say Hello hi yo endsay")
>>> m.group('value')
'Hello hi yo'
Run Code Online (Sandbox Code Playgroud)

注意:标题可能不易理解.那是因为我不知道怎么说.对不起,如果我引起任何混淆.

python regex variables variable-assignment

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

如何使seaborn.heatmap更大(正常大小)?

我在jupyter笔记本中用以下命令显示了情节:

sns.heatmap(pcts, annot=True, linewidth=.1, vmax=99, fmt='.1f', cmap='YlOrRd', square=True, cbar=False)
plt.yticks(list(reversed(range(len(indices)))), ['Index '+str(x) for x in indices], rotation='horizontal')
plt.title('Percentile ranks of\nsamples\' category spending');
Run Code Online (Sandbox Code Playgroud)

得到了以下图片

正方形太小的热图

即正方形看起来小得令人无法接受.

我怎样才能让它们更大?

python heatmap seaborn jupyter-notebook

9
推荐指数
2
解决办法
2万
查看次数

在线程之间划分循环迭代

我最近编写了一个小数字运算程序,它基本上遍历一个N维网格,并在每个点执行一些计算.

for (int i1 = 0; i1 < N; i1++)
  for (int i2 = 0; i2 < N; i2++)
    for (int i3 = 0; i3 < N; i3++)
      for (int i4 = 0; i4 < N; i4++)
        histogram[bin_index(i1, i2, i3, i4)] += 1; // see bottom of question
Run Code Online (Sandbox Code Playgroud)

它运行良好,yadda yadda yadda,可爱的图形结果;-)然后我想,我的计算机上有2个核心,为什么不让这个程序多线程,所以我可以运行它两倍的速度?

现在,我的循环总共运行了大约十亿次计算,我需要一些方法将它们分散在线程中.我想我应该将计算分组为"任务" - 比如最外层循环的每次迭代都是一项任务 - 然后将任务分发给线程.我考虑过了

  • 只给线程#n最外层循环的所有迭代i1 % nthreads == n- 基本上预先确定哪些任务进入哪些线程
  • 尝试设置一些互斥保护变量,该变量保存i1下一个需要执行的任务的参数(在本例中) - 动态地将任务分配给线程

有什么理由选择一种方法而不是另一种方法?还是我没想过的另一种方法?它甚至重要吗?

顺便说一下,我用C编写了这个特定的程序,但我想我也会在其他语言中再做同样的事情,所以答案不一定是C特定的.(如果有人知道用于Linux的C库可以做这种事情,我很想知道它)

编辑:在这种情况下bin_index是一个确定性函数,除了它自己的局部变量之外不会改变任何东西.像这样的东西:

int bin_index(int i1, int i2, …
Run Code Online (Sandbox Code Playgroud)

multithreading loops

8
推荐指数
1
解决办法
2327
查看次数

在Python中将表示为<number> [m | h | d | s | w]的时间字符串转换为秒

是否有一种很好的方法来转换表示时间的字符串,格式为[m | h | d | s | w](m =分钟,h =小时,d =天,s =秒w =星期)到秒数?即

def convert_to_seconds(timeduration):
    ...

convert_to_seconds("1h")
-> 3600

convert_to_seconds("1d")
-> 86400
Run Code Online (Sandbox Code Playgroud)

等等?

谢谢!

python datetime

8
推荐指数
3
解决办法
4397
查看次数

__eq__() 在嵌套数据结构中多次调用而不是一次

一年一两次,我遇到以下问题:我有一些比较操作可能很昂贵的类型(例如,值太大而无法保存在内存中,需要从磁盘加载或相等性很难计算,因为单个值可能有多种表示,想想化学式)。这种类型是嵌套数据结构的一部分(例如嵌套列表或元组或某些树)。有时我注意到比较运算符 (__lt__我的类型上等)对于单个比较的相同值被多次调用。

我将尝试用以下示例来说明问题:

class X:
    comparisons = 0

    def __init__(self, value):
        self.value = value

    def __lt__(self, other):
        return self.value < other.value

    def __gt__(self, other):
        return self.value > other.value

    def __eq__(self, other):
        X.comparisons += 1
        return self.value == other.value

def nest_a_hundred_times(value):
    for i in range(100): value = [value]
    return value

print(nest_a_hundred_times(X(1)) < nest_a_hundred_times(X(0)))
print(X.comparisons)
Run Code Online (Sandbox Code Playgroud)

在这个例子中,X是我的类型具有昂贵的比较操作,我只是计算次数__eq__()被调用但其他操作也可能很昂贵。该类型的两个不相等的值被创建并嵌套在单元素列表中多次。

运行示例打印False, 100。所以__eq__()被调用了100次。

我知道为什么发生这种情况:对于内置比较函数list对象平等单个列表元素首先比较,发现在该指数两个列表不同,比较订货那些元素之前。我认为当仅使用六个比较运算符(==, !=, <, <=, …

python comparison data-structures

8
推荐指数
1
解决办法
156
查看次数

MessageDigest SHA-512与openssl不同

我无法弄清楚我在这里做错了什么.我有以下代码:

byte[] digest = new byte[0];
MessageDigest md = null;
try{
    md = MessageDigest.getInstance( "SHA-512" );
}
catch( NoSuchAlgorithmException e ) {
    return digest;
}
digest = md.digest( myString.getBytes() );
Run Code Online (Sandbox Code Playgroud)

查看NetBeans调试器中摘要byte []的十六进制值,它显示的内容与输出的不同:

echo "myString" | openssl dgst -sha512
Run Code Online (Sandbox Code Playgroud)

我猜这是一个字符编码问题,但是JVM和openssl是否使用了该机器的默认字符集?

任何帮助表示赞赏.

java message openssl sha digest

7
推荐指数
1
解决办法
2446
查看次数

Python:将包含非ASCII字符的列表写入文本文件

我正在使用python 3.4,我正在尝试将一个名称列表写入文本文件.清单如下:

my_list = ['Dejan Živkovi?','Gregg Berhalter','James Stevens','Mike Windischmann',
               'Gunnar Heiðar Þorvaldsson']
Run Code Online (Sandbox Code Playgroud)

我使用以下代码导出列表:

file = open("/Users/.../Desktop/Name_Python.txt", "w")
file.writelines( "%s\n" % item for item in my_list )
file.close()
Run Code Online (Sandbox Code Playgroud)

但它不起作用.Python似乎不喜欢非ASCII字符,并给我以下错误:

"UnicodeEncodeError: 'ascii' codec can't encode character '\u017d' in position 6: ordinal not in range(128)"
Run Code Online (Sandbox Code Playgroud)

你知道有没有办法解决这个问题?也许可以用UTF-8/unicode写文件?

python ascii newline file list

7
推荐指数
1
解决办法
7154
查看次数