【发布时间】:2016-10-16 07:33:18
【问题描述】:
我想知道如何实现字符串检查,我想确保字符串的第一个(&last)字符是字母数字。我知道isalnum,但是如何使用它来实现此检查/替换?
所以,我有一个这样的字符串:
st="-jkkujkl-ghjkjhkj*"
我想回来:
st="jkkujkl-ghjkjhkj"
谢谢..
【问题讨论】:
标签: python
我想知道如何实现字符串检查,我想确保字符串的第一个(&last)字符是字母数字。我知道isalnum,但是如何使用它来实现此检查/替换?
所以,我有一个这样的字符串:
st="-jkkujkl-ghjkjhkj*"
我想回来:
st="jkkujkl-ghjkjhkj"
谢谢..
【问题讨论】:
标签: python
虽然不完全是您想要的,但使用 str.strip 应该可以达到您的目的
import string
st.strip(string.punctuation)
Out[174]: 'jkkujkl-ghjkjhkj'
【讨论】:
您可以使用如下所示的正则表达式:
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 的回答更加简单明了。
如果您不确定,那么这个正则表达式版本会更好。
【讨论】:
您可以使用以下两种表达方式:
st = re.sub('^\W*', '', st)
st = re.sub('\W*$', '', st)
这将删除字符串开头和结尾的所有非 alpha 字符,而不仅仅是第一个字符。
【讨论】:
+
foo 的字符串上执行st = re.sub('^\W*', '-', st),您将在前面看到-
re.sub('\\*', '+') 就完美了 ;)
你可以使用正则表达式。
这样的事情可能会奏效;
\w.+?\w
但是我不知道如何在 python 中进行正则表达式匹配..
【讨论】:
提示 1: ord() 可以将字母转换为字符编号
提示 2: alpha 承租人在ord() 中的97 和122 之间
提示 3: st[0] 将返回字符串中的第一个字母 st[-1] 将返回最后一个字母
【讨论】:
您的问题的确切答案可能如下:
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
【讨论】: