首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用相同名称替换python reduce代码

用相同名称替换python reduce代码
EN

Stack Overflow用户
提问于 2017-05-04 20:16:05
回答 1查看 94关注 0票数 0

有没有可能减少这段代码?

代码语言:javascript
复制
    Nomefilm = selected_channel[1]
    Nomefilm = Nomefilm.replace('.','').replace('-','').replace('(','').replace(')','').replace('[HD]','').replace('2013','').replace('2014','').replace('2015','').replace('2016','')
    Nomefilm = Nomefilm.replace('PrimaVisione 1','').replace('PrimaVisione 2','').replace('PrimaVisione 3','').replace('PrimaVisione 4','').replace('PrimaVisione 5','').replace('PrimaVisione 6','').replace('PrimaVisione 7','')
    Nomefilm = Nomefilm.replace('PrimaVisione 8','').replace('PrimaVisione 9','').replace('PrimaVisione 10','').replace('PrimaVisione 11','').replace('PrimaVisione 12','').replace('PrimaVisione 13','').replace('PrimaVisione 14','')
    Nomefilm = Nomefilm.replace('PrimaVisione 15','').replace('PrimaVisione 16','').replace('PrimaVisione 17','').replace('PrimaVisione 18','').replace('PrimaVisione 19','').replace('PrimaVisione 20','').replace('PrimaVisione 21','')
    Nomefilm = Nomefilm.replace('Primafila 1-2','').replace('Primafila 3-4','').replace('Primafila 5-6','').replace('Primafila 7-8','').replace('Primafila 9-10','').replace('Primafila 11-12','').replace('Primafila 13-14','').replace('Primafila 15','')
    Nomefilm = Nomefilm.replace('Primafila 16-17','').replace('Primafila 18','').replace('Primafila 19','')
EN

回答 1

Stack Overflow用户

发布于 2017-05-04 20:40:06

编写一个函数来擦除任何目标字符串列表。

代码语言:javascript
复制
def erase( s, target):
    for t in target:
        s = s.replace( t, '')
    return s

然后

代码语言:javascript
复制
TO_ERASE = ( '.', '-', ',' , '(', ')', '[HD]', '2013', 
    ... 
    'Primafila 19',
)


Nomefilm = erase( Nomefilm, TO_ERASE)

您还可以使用正则表达式(Python re模块)。例如,您可以使用删除所有以"Primafila "开头、以一定数量的数字和连字符结尾的字符串

代码语言:javascript
复制
s = re.sub( 'Primafila\ [0-9\-]+', '', s)

请注意,这与您的代码并不完全相同:它将很高兴地将"Primafila 2345-------g"转换为"g"。它还可能要求您学习正则表达式的语法,这实际上是一种不同的语言(一种比Python更神秘的语言)。但是,如果相似字符串的数量变得太大而无法合理地作为列表提供,则将其作为单个表达式处理可能是更好的方法。

正则表达式可以非常强大。如果正则表达式匹配"Primofila ",后跟一个一位或两位数字,然后可选地后跟一个连字符和另一个一位或两位数字,则该正则表达式将为'Primofila\ [0-9]{1,2}(-[0-9]{1,2})?'

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43782669

复制
相关文章

相似问题

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