如何在python中检查字符串是否只包含[数字或特殊字符]

时间:2016-02-16 17:01:03

标签: python

我想区分两个python字符串2015-07-012015-Jul-01

  

案例1:数字OR特殊字符

     

案例2:其他所有(字符)

我知道isdigit()功能,但它只能识别数字而非特殊字符。

特殊字符是指连字符 - 或斜杠/

5 个答案:

答案 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字符串是否包含特殊字符,但除非你更具体地说明你希望程序生成什么,否则我无法帮助你。