是否有更好的方式从此A
F
和A13: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
注意:数字长度未知
答案 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?