前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >127-提取字符串

127-提取字符串

作者头像
凯茜的老爸
发布2019-07-09 17:26:58
7870
发布2019-07-09 17:26:58
举报
文章被收录于专栏:python百例python百例

有这样的字符串:“123#%4hello*world000”,要求:

  • 将字符串中的所有字母取出来
  • 将字符串中开头的非字母字符去除 分析:对于提取字母的要求,首先遍历所有的字符串,如果字符串是字母就把它保存到列表中,如果要求结果仍然是字符串,再把它们拼接即可:
>>> s1 = '123#%4hello*world000'
>>> slist = []
>>> for ch in s1:
...     if ch.isalpha():
...         slist.append(ch)
...
>>> print(slist)
['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
>>> ''.join(slist)
'helloworld'

列表解析可以将以上代码简化成一行:

>>> [ch for ch in s1 if ch.isalpha()]
['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
>>> ''.join([ch for ch in s1 if ch.isalpha()])
'helloworld'

第二个需求是去除字符串开头的非字母字符,这个功能的实现只要找到左边第一字母的下标,然后取切片。 以下通过两个方法完成第二点要求:

  • 直接取下标
>>> s1 = '123#%4hello*world000'
>>> for i in range(len(s1)):
...     if  s1[i].isalpha():
...         break
...
>>> print(s1[i:])
hello*world000
  • 通过enumerate内建函数
>>> s1 = '123#%4hello*world000'
>>> for ind, ch in enumerate(s1):
...     if ch.isalpha():
...         break
...
>>> print(s1[ind:])
hello*world000
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.07.05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档