我想知道如何实现字符串检查,我想确保字符串的第一个(和最后一个)字符是字母数字。我知道isalnum
,但如何使用它来实现此检查/替换?
所以,我有一个像这样的字符串:
st="-jkkujkl-ghjkjhkj*"
我想要回来:
st="jkkujkl-ghjkjhkj"
谢谢..
答案 0 :(得分:5)
虽然不完全符合您的要求,但使用str.strip应该符合您的目的
import string
st.strip(string.punctuation)
Out[174]: 'jkkujkl-ghjkjhkj'
答案 1 :(得分:2)
您可以使用如下所示的正则表达式:
import re
# \W is a set of all special chars, and also include '_'
# If you have elements in the set [\W_] at start and end, replace with ''
p = re.compile(r'^[\W_]+|[\W_]+$')
st="-jkkujkl-ghjkjhkj*"
print p.subn('', st)[0]
输出:
jkkujkl-ghjkjhkj
编辑:
如果您的特殊字符在集合中:!“#$%& \'()* +, - 。/ :;< =>?@ [\ _] ^ _` {|} 〜强>
@ Abhijit的回答更简单,更清晰。
如果你不确定那么这个正则表达式版本更好。
答案 2 :(得分:1)
您可以使用以下两个表达式:
st = re.sub('^\W*', '', st)
st = re.sub('\W*$', '', st)
这将删除字符串开头和结尾的所有非alpha字符,而不仅仅是第一个字符串。
答案 3 :(得分:0)
您可以使用正则表达式。
这样的事可以奏效;
\w.+?\w
但是我不知道如何在python中进行正则表达式匹配..
答案 4 :(得分:0)
提示1: ord()
可以将字母转换为字符编号
提示2:字母承租人在97
122
和ord()
之间
提示3: st[0]
将返回字符串st[-1]
中的第一个字母将返回最后一个
答案 5 :(得分:0)
您的问题的确切答案可能如下:
def stringCheck(astring):
firstChar = astring[0] if astring[0].isalnum() else ''
lastChar = astring[-1] if astring[-1].isalnum() else ''
return firstChar + astring[1:-1] + lastChar