我需要清理一些字符串并从中删除无效的前导(非字母)字符。例如:
"3_hello" -> "hello"
"_hello" -> "hello"
"__hello" -> "hello"
"++hello" -> "hello"
有没有一种快速方法可以使用re来竞争任务?
答案 0 :(得分:3)
您可以尝试^[^A-Za-z]*
,这里有一些测试用例:
import re
re.sub('^[^A-Za-z]*', '', "3_hello")
# 'hello'
re.sub('^[^A-Za-z]*', '', "_hello")
# 'hello'
re.sub('^[^A-Za-z]*', '', "++hello")
# 'hello'
re.sub('^[^A-Za-z]*', '', "__hello")
# 'hello'
^
表示字符串的开头; []
中使用另一个^
来否定字母字母; *
作为贪婪量词,以便从字符串开头开始的任何非字母都将被删除。答案 1 :(得分:0)
您可以使用函数str.isalpha()并迭代字符串以仅获取字母并将其放在另一个变量中。
答案 2 :(得分:0)
import re
for string in [ "++hello", "__hello", "3_hello"]:
print "".join(re.findall("[a-zA-Z]", string))
hello
hello
hello
答案 3 :(得分:0)
我建议您使用re.search
搜索字母字符串:
m = re.search("[a-zA-Z]+", "3_hello")
print(m.group(0))
hello
答案 4 :(得分:0)
您可以使用循环和str.isalpha去除前导的非字母字符
a = '3_hello'
for i in range (0, len(a)):
if str.isalpha(a[i:]):
a=a[i:]
break
print(a)
您好