小编Tom*_*Tom的帖子

"Pythonic"等效于处理开关和多字符串比较

好吧,所以我的头衔糟透了.一个例子效果更好:

input = 'check yahoo.com'
Run Code Online (Sandbox Code Playgroud)

我想解析输入,使用第一个单词作为"命令",并将字符串的其余部分作为参数.这是我的非Pythonic思想编码的简单版本:

if len(input) > 0:
    a = input.split(' ')
    if a[0] == 'check':
        if len(a) > 1:
            do_check(a[1])
    elif a[0] == 'search':
        if len(a) > 1:
            do_search(a[1])
Run Code Online (Sandbox Code Playgroud)

我喜欢Python,因为它将通常很复杂的东西变成了相当简单的东西.我对它没有太多的经验,而且我相信有更好的方法来做这些事情...某种程度上更加诡异.我已经看到一些人用dicts和lambda函数替换switch语句的例子,而其他人只是推荐if..else嵌套.

python conditional

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

对于单个Unicode字符串,Python返回长度为2

在Python 2.7中:

In [2]: utf8_str = '\xf0\x9f\x91\x8d'
In [3]: print(utf8_str)

In [4]: unicode_str = utf8_str.decode('utf-8')
In [5]: print(unicode_str)
 
In [6]: unicode_str
Out[6]: u'\U0001f44d'
In [7]: len(unicode_str)
Out[7]: 2
Run Code Online (Sandbox Code Playgroud)

由于unicode_str只包含一个unicode代码点(0x0001f44d),为什么len(unicode_str)返回2而不是1?

python unicode python-2.7 python-unicode

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

管理多个Twisted客户端连接

我正在尝试在一种管理多个客户端连接的蜘蛛程序中使用Twisted.我想维护一个大约5个客户同时工作的池.每个客户端的功能是连接到从列表中获取的指定IRC服务器,输入特定通道,然后将该通道中的用户列表保存到数据库.

我遇到的问题比任何东西都更具建筑性.我是Twisted的新手,我不知道有哪些选项可用于管理多个客户端.我假设最简单的方法是让每个ClientCreator实例在完成其工作后死掉,并有一个中央循环,可以检查是否有空间添加新客户端.我认为这不是一个特别不寻常的问题,所以我希望从其他人的经历中收集一些信息.

python twisted

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

检查嵌套列表中是否存在值

在我的清单中:

animals =  [ ['dog', ['bite'] ],
             ['cat', ['bite', 'scratch'] ],
             ['bird', ['peck', 'bite'] ], ]

add('bird', 'peck')
add('bird', 'screech')
add('turtle', 'hide')
Run Code Online (Sandbox Code Playgroud)

add函数应该在将它们添加到列表之前检查动物和动作是否尚未添加.有没有办法在不将每个步骤的循环嵌入列表的情况下完成此操作?

python

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