Python中的函数(二)

由于Python的函数是对象,很多在其他语言中比较难的构造在Python中非常容易实现,例如在数据清洗中,我们需要将一些变形应用到下列字符串列表中:

data = ['Alabama','Georgia!','Georgia','georgia','FlorIda',
        'south carolina##','West virginia?']

为了使这些数据整齐、可用于分析,有很多事情需要做:去除空格,移去标点符号,调整适当的大小写。有两种方法可以清洗,种方式是使用内建的字符串方法,结合标准库中的正则表达式模块re

import re
def clean_strings(strings):
    result = []
    for value in strings:
        value = value.strip()
        value = re.sub('[!#?]','',value)
        value = value.title()
        result.append(value)
    return result

结果如下:

clean_strings(data)
['Alabama',
 'Georgia',
 'Georgia',
 'Georgia',
 'Florida',
 'South Carolina',
 'West Virginia']

还有另外一种方法会让你觉得有用的实现就是将特定的列表操作应用到某个字符串的集合上:

def a_data(value):
    return re.sub('[!#?]','',value)

clean_ops = [str.strip, a_data, str.title]

def clean_s(strings,ops):
    result = []
    for value in strings:
        for function in ops:
            value = function(value)
        result.append(value)
    return result

结果如下:

clean_s(data,clean_ops)
['Alabama',
 'Georgia',
 'Georgia',
 'Georgia',
 'Florida',
 'South Carolina',
 'West Virginia']

像这种更为函数化的模式可以使你在更高层次上方便地修改字符串变换方法。clean_strings函数现在也具有更强的复用性和通用性。

当然你也可以将函数作为一个参数传给其他的函数,比如内建的map函数,可以将一个函数应用到一个序列上:

for data_a in map(a_data,data):
    print(data_a)

Alabama
Georgia
Georgia
georgia
FlorIda
south carolina
West virginia

下一节将介绍匿名函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

格陵Lan丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值