我想区分两个python字符串2015-07-01
和2015-Jul-01
案例1:数字
OR
特殊字符案例2:其他所有(字符)
我知道isdigit()
功能,但它只能识别数字而非特殊字符。
特殊字符是指连字符 - 或斜杠/
答案 0 :(得分:4)
您可以使用正则表达式检查字符串是否仅包含数字,连字符或斜杠。
>>> bool(re.match('[\d/-]+$', '2015-07-01'))
True
>>> bool(re.match('[\d/-]+$', '2015-Jul-01'))
False
我们不需要^锚点,因为match
从字符串的开头开始。
或者,使用all
且没有正则表达式:
>>> from string import digits
>>> allowed = set(digits).union('/-')
>>> all(c in allowed for c in '2015-07-01')
True
>>> all(c in allowed for c in '2015-Jul-01')
False
答案 1 :(得分:2)
您可以检查字符串是否包含任何字母。
bool(re.search('[a-zA-Z]', the_string))
答案 2 :(得分:2)
假设data
是一个字符串,并且您想要检查其中没有“字母”字符..
if not any(c.isalpha() for c in data):
print('The string contains no letters')
答案 3 :(得分:2)
其他答案比这更好地解决了您的问题标题。但我认为指出这一点并没有坏处,现在我们知道你的具体情况是只处理两种日期格式,我发现dateparser模块对此非常有用,而不是正则表达式或异常可以是混合。
import dateparser
date1 = '2015-07-01'
date2 = '2015-Jul-01'
date1out = dateparser.parse(date1)
date2out = dateparser.parse(date2)
print date1out
print date2out
print '\n'
print date1out.date()
print date2out.date()
会给你
2015-07-01 00:00:00
2015-07-01 00:00:00
2015-07-01
2015-07-01
答案 4 :(得分:0)
import string
word = '2015-07-01'
invalidChars = set(string.punctuation)
if any(char in invalidChars for char in word):
print ("Contains special characters")
else:
print ("No special characters")
上面的代码会告诉你yu字符串是否包含特殊字符,但除非你更具体地说明你希望程序生成什么,否则我无法帮助你。