python正则表达式,拉出所有字母

时间:2014-04-26 07:09:16

标签: python regex

是否有更好的方式从此A

中提取FA13:F20
a="A13:F20"
import re
pattern = re.compile(r'\D+\d+\D+')
matches = re.search(pattern, a)
num = matches.group(0)
print num[0]
print num[len(num)-1]

输出

A F

注意:数字长度未知

5 个答案:

答案 0 :(得分:4)

您不必使用正则表达式,也不必使用re。假设你只想留下信件,你可以这样做:

a = "A13:F20"
a = filter(lambda x: x.isalpha(), a)

答案 1 :(得分:2)

使用简单的列表推导作为过滤器,只获取实际字符串中的字母。

print [char for char in input_string if char.isalpha()]
# ['A', 'F']

答案 2 :(得分:2)

我会这样做:

>>> re.findall(r'[a-z]', a, re.IGNORECASE)
['A', 'F']

答案 3 :(得分:0)

您可以使用re.sub

>>> a="A13.F20"
>>> re.sub(r'[^A-Z]', '', a)     # Remove everything apart from A-Z
'AF'
>>> re.sub(r'[A-Z]', '', a)      # Remove A-Z
'13.20'
>>> 

答案 4 :(得分:0)

如果你正在处理所有格式相同的字符串,你可以删除子字符串:

a="A13:F20"
print a[0], a[4]

更多关于python切片的答案: Is there a way to substring a string in Python?