原谅如果这是一个很长的问题:
我用Python编程了大约六个月.自学,从Python教程开始,然后是SO,然后只使用谷歌的东西.
这是悲伤的部分:没有人告诉我所有字符串都应该是Unicode.不,我不是在撒谎或说谎,但教程在哪里提到它?我也看到大多数示例只是使用byte strings,而不是Unicode strings.我只是浏览并在SO上遇到这个问题,它说明Python中的每个字符串应该是一个Unicode字符串.这让我哭了!
我读到默认情况下Python 3.0中的每个字符串都是Unicode,所以我的问题是2.x:
我应该这样做:
print u'Some text'还是只是print
'Text'?
一切都应该是Unicode,这是否意味着,就像说我有一个tuple:
t = ('First', 'Second'), it should be t = (u'First', u'Second')?
我读过我可以做一个from __future__ import unicode_literals然后每个字符串都是一个Unicode字符串,但是我应该在容器内执行此操作吗?
读/写文件时,我应该使用该codecs模块.对?或者我应该使用标准方式或阅读/写作和/ encode或decode在需要的地方?
如果我从中获取字符串raw_input(),我应该将其转换为Unicode吗?
在2.x中处理所有上述问题的常用方法是什么?该from __future__ import unicode_literals声明?
对不起是一个这样的菜鸟,但这改变了我长期以来一直在做的事情,所以我很困惑.
我正在尝试编写一个使用该subprocess模块的小应用程序.
我的程序调用外部Bash命令,需要一些时间来处理.在此期间,我想向用户展示一系列这样的消息:
处理.请稍等...
输出为foo()
我怎么能用Popen.wait()或者这样做呢Popen.poll().我已经读过我需要使用的Popen.returncode,但我怎么能得到它来主动检查状态,我不知道.
如何在Python中创建对象列表(类实例)?
或者这是设计糟糕的结果?我需要这个原因我有不同的对象,我需要在稍后阶段处理它们,所以我会继续将它们添加到列表中并稍后调用它们.
我如何开始学习Twisted?你们推荐哪些书籍,文档或教程?
我问这个问题的原因是我认为学习Twisted会帮助我学习与网络编程相关的概念(术语及其工作方式和内容)我听说Twisted的文档并不那么好.是真的吗?
请注意,我正在寻找一些实际帮助你的建议.我正在寻找你的经验.PS:我知道官方文件.还有O'Reilly Book on Twisted; 那很好吗?
几分钟前,在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.
我刚刚运行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)
以上就是一个例子.在我的代码中,我必须使用split和join很多,为此我使用的是string模块.
这已被弃用了吗?如果是,在Python 2.6中处理拆分/连接的方法是什么?我试过搜索,但我发现自己不清楚,所以我在这里问.
在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作为一个例子,因为它完全符合我的问题.当然,一个可以实现range的def range(end, start=0),但是这不是重点.
我想知道为什么即使是相同的用户名和相同的密码,htpasswd每次输出一个新的哈希?我试着找到这个问题的答案,但不能.
在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吗?
从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 ×9
dictionary ×2
.htpasswd ×1
bytestring ×1
sorting ×1
string ×1
subprocess ×1
twisted ×1
unicode ×1