首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类似字符串处理的干版本

类似字符串处理的干版本
EN

Stack Overflow用户
提问于 2013-02-11 06:52:21
回答 3查看 83关注 0票数 0

以下哪种方法更有效:

代码语言:javascript
复制
directors = get_element_or_none(title_node, 'Director')
producers = get_element_or_none(title_node, 'Producer')
writers = get_element_or_none(title_node, 'Writer')

if directors:
    directors = [director.strip() for director in directors.split(',')]
if producers:
    producers = [producer.strip() for producer in producers.split(',')]
if writers:
    writers = [writer.strip() for writer in writers.split(',')]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-11 06:54:50

始终生成列表(可能为空):

代码语言:javascript
复制
directors = [director.strip() for director in directors.split(',')] if directors else []
# etc.

或者使用map(str.strip, ...)

代码语言:javascript
复制
directors = map(str.strip, directors.split(',')) if directors else []

但在Python3中,这需要显式调用list()

代码语言:javascript
复制
directors = list(map(str.strip, directors.split(','))) if directors else []

因为map()返回的是迭代器。

或者使用helper函数:

代码语言:javascript
复制
def tolist(commaseparated):
    return [s.strip() for s in commaseparated.split(',')] if commaseparated else []

directors = tolist(directors)
producers = tolist(producers)
writers   = tolist(writers)

或者,使用地图版本:

代码语言:javascript
复制
def tolist(commaseparated):
    return map(str.strip, commaseparated.split(',')) if commaseparated else []

可以使用get_element_or_none()调用将拆分和剥离操作合并到一个函数中,但这取决于您还可以将tolist()功能用于什么用途。

票数 1
EN

Stack Overflow用户

发布于 2013-02-11 07:00:19

不是很激进,但是:

代码语言:javascript
复制
def clean_element(node, tag):
    elements  = get_element_or_none(node, tag)
    if elements:
        elements = [element.strip() for element in elements.split(',')]
    return elements


directors = clean_element(title_node, 'Director')
producers = clean_element(title_node, 'Producer')
writers   = clean_element(title_node, 'Writer')

就像有两个轮子的自行车一样激进。

代码语言:javascript
复制
import functools
get_them  = functools.partial(clean_element, title_node)

directors = get_them('Director')
producers = get_them('Producer')
writers   = get_them('Writer')

在重用中测量的效率。

票数 0
EN

Stack Overflow用户

发布于 2013-02-11 07:01:03

如果你的意图是枯燥的--比如不重复某些事情,并引入更多的错误机会--那么下面这样的事情会怎么样:

代码语言:javascript
复制
cast={}
for title in ('Director','Prodcer','Writer'):
    name=get_element_or_none(title_node, title)
    if name:
        cast [title]=[x.strip() for x in name.split(',')]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14803563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档