小编use*_*312的帖子

Python和Unicode:一切都应该是Unicode

原谅如果这是一个很长的问题:

我用Python编程了大约六个月.自学,从Python教程开始,然后是SO,然后只使用谷歌的东西.

这是悲伤的部分:没有人告诉我所有字符串都应该是Unicode.不,我不是在撒谎或说谎,但教程在哪里提到它?我也看到大多数示例只是使用byte strings,而不是Unicode strings.我只是浏览并在SO上遇到这个问题,它说明Python中的每个字符串应该是一个Unicode字符串.这让我哭了!

我读到默认情况下Python 3.0中的每个字符串都是Unicode,所以我的问题是2.x:

  1. 我应该这样做:

    print u'Some text'还是只是print 'Text'

  2. 一切都应该是Unicode,这是否意味着,就像说我有一个tuple:

    t = ('First', 'Second'), it should be t = (u'First', u'Second')?

    我读过我可以做一个from __future__ import unicode_literals然后每个字符串都是一个Unicode字符串,但是我应该在容器内执行此操作吗?

  3. 读/写文件时,我应该使用该codecs模块.对?或者我应该使用标准方式或阅读/写作和/ encodedecode在需要的地方?

  4. 如果我从中获取字符串raw_input(),我应该将其转换为Unicode吗?

在2.x中处理所有上述问题的常用方法是什么?该from __future__ import unicode_literals声明?

对不起是一个这样的菜鸟,但这改变了我长期以来一直在做的事情,所以我很困惑.

python unicode bytestring

22
推荐指数
3
解决办法
3854
查看次数

使用子进程wait()和poll()

我正在尝试编写一个使用该subprocess模块的小应用程序.

我的程序调用外部Bash命令,需要一些时间来处理.在此期间,我想向用户展示一系列这样的消息:

处理.请稍等...
输出为foo()

我怎么能用Popen.wait()或者这样做呢Popen.poll().我已经读过我需要使用的Popen.returncode,但我怎么能得到它来主动检查状态,我不知道.

python subprocess

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

在Python中创建对象列表

如何在Python中创建对象列表(类实例)?

或者这是设计糟糕的结果?我需要这个原因我有不同的对象,我需要在稍后阶段处理它们,所以我会继续将它们添加到列表中并稍后调用它们.

python

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

学习扭曲

我如何开始学习Twisted?你们推荐哪些书籍,文档或教程?

我问这个问题的原因是我认为学习Twisted会帮助我学习与网络编程相关的概念(术语及其工作方式和内容)我听说Twisted的文档并不那么好.是真的吗?

请注意,我正在寻找一些实际帮助你的建议.我正在寻找你的经验.PS:我知道官方文件.还有O'Reilly Book on Twisted; 那很好吗?

python twisted

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

使用operator.itemgetter对字典进行排序

几分钟前,在SO上根据它们的值对字典键进行排序时,问了一个问题.

我刚刚读operator.itemgetter了几天前的排序方法,并决定尝试一下,但它似乎没有起作用.

并不是我对问题的答案有任何问题,我只是想尝试一下operator.itemgetter.

所以这个词是:

>>> mydict = { 'a1': ['g',6],
           'a2': ['e',2],
           'a3': ['h',3],
           'a4': ['s',2],
           'a5': ['j',9],
           'a6': ['y',7] }
Run Code Online (Sandbox Code Playgroud)

我试过这个:

>>> l = sorted(mydict.itervalues(), key=operator.itemgetter(1))
>>> l
[['e', 2], ['s', 2], ['h', 3], ['g', 6], ['y', 7], ['j', 9]]
Run Code Online (Sandbox Code Playgroud)

这就像我想要的那样.但是,由于我没有完整的字典(mydict.itervalues()),我试过这个:

>>> complete = sorted(mydict.iteritems(), key=operator.itemgetter(2))
Run Code Online (Sandbox Code Playgroud)

这不起作用(正如我预期的那样).

那么我如何使用嵌套键值对dict进行排序operator.itemgetter和调用itemgetter.

python sorting dictionary

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

使用不推荐使用的模块'string'

我刚刚运行pylint了我的代码,它显示了这条消息:

Uses of a deprecated module 'string'

string主要使用模块进行连接/拆分.

>>> names = ['Pulp', 'Fiction']
>>> import string
>>> fullname = string.join(names)
>>> print fullname
Pulp Fiction
Run Code Online (Sandbox Code Playgroud)

以上就是一个例子.在我的代码中,我必须使用splitjoin很多,为此我使用的是string模块.

这已被弃用了吗?如果是,在Python 2.6中处理拆分/连接的方法是什么?我试过搜索,但我发现自己不清楚,所以我在这里问.

python string

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

默认和非默认参数的顺序

在Python中,我理解默认参数出现在最后,非默认参数不能遵循默认参数.那样就好.例如:

>>> def foo(x=0, y):
        return x, y
SyntaxError: non-default argument follows default argument
Run Code Online (Sandbox Code Playgroud)

这没关系.

但是,当我想要第一个参数应该是默认参数的情况呢?例如,从上面的代码可以看出,x必须是第一个参数,它应该具有默认值0.

是否有可能做到这一点?我问,因为即使在range函数中,我猜它是这样的:

def range(start=0, end):
    pass
Run Code Online (Sandbox Code Playgroud)

那么这是如何完成的,如果不可能,这是如何实现的range呢?请注意,我坚持认为第一个参数是默认值,即整个点.我用它range作为一个例子,因为它完全符合我的问题.当然,一个可以实现rangedef range(end, start=0),但是这不是重点.

python argument-passing

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

不同的输出,相同的用户名和密码

我想知道为什么即使是相同的用户名和相同的密码,htpasswd每次输出一个新的哈希?我试着找到这个问题的答案,但不能.

.htpasswd

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

用Python创建首字母缩略词

在Python中,如何创建给定字符串的首字母缩写?

比如,输入字符串:

'First Second Third'
Run Code Online (Sandbox Code Playgroud)

输出:

'FST'
Run Code Online (Sandbox Code Playgroud)

我正在尝试这样的事情:

>>> for e in x:
        print e[0]
Run Code Online (Sandbox Code Playgroud)

但它没有工作......有关如何做到这一点的任何建议?我确信有一种正确的方法可以做到这一点,但我似乎无法弄明白.我必须使用re吗?

python

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

从可迭代创建字典

从iterable创建字典并为其分配一些默认值的最简单方法是什么?我试过了:

>>> x = dict(zip(range(0, 10), range(0)))
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为范围(0)不是可迭代的,因为我认为它不会(但我还是试过了!)

那我该怎么办呢?如果我做:

>>> x = dict(zip(range(0, 10), 0))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: zip argument #2 must support iteration
Run Code Online (Sandbox Code Playgroud)

这也不起作用.有什么建议?

python dictionary

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