小编Man*_*ron的帖子

格式浮动标准json模块

我在python 2.6中使用标准的json模块来序列化浮点数列表.但是,我得到的结果如下:

>>> import json
>>> json.dumps([23.67, 23.97, 23.87])
'[23.670000000000002, 23.969999999999999, 23.870000000000001]'
Run Code Online (Sandbox Code Playgroud)

我希望浮点数只用两位小数进行格式化.输出应如下所示:

>>> json.dumps([23.67, 23.97, 23.87])
'[23.67, 23.97, 23.87]'
Run Code Online (Sandbox Code Playgroud)

我尝试过定义自己的JSON Encoder类:

class MyEncoder(json.JSONEncoder):
    def encode(self, obj):
        if isinstance(obj, float):
            return format(obj, '.2f')
        return json.JSONEncoder.encode(self, obj)
Run Code Online (Sandbox Code Playgroud)

这适用于唯一的浮动对象:

>>> json.dumps(23.67, cls=MyEncoder)
'23.67'
Run Code Online (Sandbox Code Playgroud)

但嵌套对象失败:

>>> json.dumps([23.67, 23.97, 23.87])
'[23.670000000000002, 23.969999999999999, 23.870000000000001]'
Run Code Online (Sandbox Code Playgroud)

我不想有外部依赖,所以我更喜欢坚持使用标准的json模块.

我怎样才能做到这一点?

python floating-point formatting json

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

用微秒解析日期时间字符串

我有一个文本文件,在isoformat中有很多日期时间字符串.字符串类似于:

'2009-02-10 16:06:52.598800'

这些字符串是使用生成的str(datetime_object).问题是,由于某种原因,str(datetime_object)当datetime对象的微秒设置为零时生成不同的格式,并且某些字符串如下所示:

'2009-02-10 16:06:52'

如何解析这些字符串并将其转换为日期时间对象

获取对象中的所有数据非常重要,包括微秒.

我必须使用Python 2.5,我发现%f2.5中不存在微秒的格式指令.

python datetime parsing

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

用于编写P2P应用程序的Python库/框架

是否有用于在Python中编写P2P应用程序的库或框架?

我知道最初的Bittorrent客户端是用Python编写的.我看起来像JXTA但是对于Python.

python jxta networking p2p

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

使用Python解析电子邮件

我正在编写一个Python脚本来处理从Procmail返回的电子邮件.正如这个问题所示,我正在使用以下Procmail配置:

:0:
|$HOME/process_mail.py
Run Code Online (Sandbox Code Playgroud)

我的process_mail.py脚本通过stdin接收电子邮件,如下所示:

From hostname Tue Jun 15 21:43:30 2010
Received: (qmail 8580 invoked from network); 15 Jun 2010 21:43:22 -0400
Received: from mail-fx0-f44.google.com (209.85.161.44)
by ip-73-187-35-131.ip.secureserver.net with SMTP; 15 Jun 2010 21:43:22 -0400
Received: by fxm19 with SMTP id 19so170709fxm.3
for <username@domain.com>; Tue, 15 Jun 2010 18:47:33 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.103.84.1 with SMTP id m1mr2774225mul.26.1276652853684; Tue, 15
Jun 2010 18:47:33 -0700 (PDT)
Received: by 10.123.143.4 with HTTP; Tue, 15 Jun 2010 …
Run Code Online (Sandbox Code Playgroud)

python email parsing mime

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

解码,如果它不是unicode

我希望我的函数接受一个可以是unicode对象或utf-8编码字符串的参数.在我的函数中,我想将参数转换为unicode.我有这样的事情:

def myfunction(text):
    if not isinstance(text, unicode):
        text = unicode(text, 'utf-8')

    ...
Run Code Online (Sandbox Code Playgroud)

是否可以避免使用isinstance?我正在寻找更友善的鸭子.

在我的解码实验中,我遇到了几种奇怪的Python行为.例如:

>>> u'hello'.decode('utf-8')
u'hello'
>>> u'cer\xf3n'.decode('utf-8')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/lib/python2.6/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in po
sition 3: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

要么

>>> u'hello'.decode('utf-8')
u'hello' 12:11
>>> unicode(u'hello', 'utf-8')
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: decoding Unicode is not supported …
Run Code Online (Sandbox Code Playgroud)

python unicode encoding utf-8

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

在Python中获取列表中较小的n个元素

我需要在Python中获得较少的n个列表.我需要这个非常快,因为它是性能的关键部分,需要重复很多次.

n通常不大于10,列表通常有大约20000个元素.每次调用该函数时,列表总是不同的.无法进行排序.

最初,我写了这个函数:

def mins(items, n):
    mins = [float('inf')]*n
    for item in items:
        for i, min in enumerate(mins):
            if item < min:
                mins.insert(i, item)
                mins.pop()
                break
    return mins
Run Code Online (Sandbox Code Playgroud)

但是这个函数无法击败对整个列表进行排序的简单排序(项目)[:n].这是我的测试:

from random import randint, random
import time

test_data = [randint(10, 50) + random() for i in range(20000)]

init = time.time()
mins = mins(test_data, 8)
print 'mins(items, n):', time.time() - init

init = time.time()
mins = sorted(test_data)[:8]
print 'sorted(items)[:n]:', time.time() - init
Run Code Online (Sandbox Code Playgroud)

结果:

mins(items, n): 0.0632939338684
sorted(items)[:n]: 0.0231449604034
Run Code Online (Sandbox Code Playgroud)

sorted()[:n]快三倍.我相信这是因为:

  1. insert()操作成本很高,因为Python列表不是链表.
  2. sorted()是一个优化的c函数,我的是纯python.

有没有办法击败sorted()[:n]?我应该使用C扩展,Pyrex或Psyco或类似的东西吗? …

python sorting algorithm

10
推荐指数
2
解决办法
3626
查看次数

使用dart动态加载dart脚本

我正在尝试使用dart动态加载一个dart脚本.我正在使用这样的东西:

的test.html:

...
<script src="http://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js"></script>
<script type="application/dart" src="test.dart"></script>
...
Run Code Online (Sandbox Code Playgroud)

test.dart:

#import('dart:html');
main() {
    var script = new ScriptElement();
    script.type = 'application/dart';
    script.src = 'helloworld.dart';
    document.body.elements.add(script);
}
Run Code Online (Sandbox Code Playgroud)

它不起作用.但是,如果我在HTML文件中内联相同的代码,它可以正常工作:

的test.html:

...
<script src="http://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js"></script>
<script type="application/dart">
#import('dart:html');
main() {
    var script = new ScriptElement();
    script.type = 'application/dart';
    script.src = 'helloworld.dart';
    document.body.elements.add(script);
}
</script>
...
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

dynamic dart

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

适用于Windows的通知库

我正在为Windows开发一个小托盘图标应用程序,我需要显示类似于在MSN Messenger或任何其他IM应用程序中收到新消息时出现的非侵入式视觉通知.

我看过Snarl,但它似乎是一个我需要安装的独立应用程序.我想要一些可以与我的应用程序捆绑在一个安装程序,库中的东西.

你推荐哪一个?

Python支持是一个巨大的优势.

python windows notifications

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

Maven - 如何获取不包括可选的依赖项列表

我想获取工件的依赖项列表,包括传递依赖项但排除(或至少标记)可选依赖项

输出mvn dependency:listmvn dependency:tree包含可选依赖项,没有任何方法可以过滤掉它们。

java maven

5
推荐指数
0
解决办法
167
查看次数

在长时间运行的过程和用户​​界面/业务逻辑分离期间提供用户反馈

在执行长时间运行的进程时,最好向用户提供反馈,例如,更新进度条.

GUI库的一些常见问题解答建议如下:

function long_running_progress()
    do_some_work()
    update_progress_bar()
    while finish
        do_some_work()
        update_progress_bar()
    end while
end function
Run Code Online (Sandbox Code Playgroud)

无论如何,我们知道将业务逻辑代码与用户界面代码分开是一种最佳实践.上面的示例是在业务逻辑功能中混合用户界面代码.

在业务逻辑层中实现功能的好技术是什么,其进度可以通过用户界面轻松跟踪而无需混合层?

欢迎任何语言或平台的答案.

user-interface hci

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