在字符串实例中,例如:
A Dirty Shame (2004)
我最后有约会。我想将该日期作为数字提取到另一个变量中。我将如何在 python 中解决这个问题?
名字也可以有数字!!
在字符串实例中,例如:
A Dirty Shame (2004)
我最后有约会。我想将该日期作为数字提取到另一个变量中。我将如何在 python 中解决这个问题?
名字也可以有数字!!
import re
s = 'A Dirty Shame (2004)'
pattern = r'(?P<year>\d{4})'
r = re.search(pattern, s)
n = int(r.group('year'))
仅查找 4 位数字。将字符串转换为整数。
import re
re.findall('\d+', 'A Dirty Shame (2004)')
您可以使用以下内容:
import re
number = int(re.findall('(?<=\()\d+(?=\))', 'A Dirty Shame (2004)')[0]);
或者您可以使用以下命令查找括号之间的所有数字,而无需使用正则表达式:
[int(s.strip('()')) for s in s.split() if s.strip('()').isdigit()]
另一个答案,但不使用正则表达式(因为它们通常很慢):
我会使用 string 中的 split funktion,它将字符串拆分为分隔符(http://docs.python.org/2/library/string.html#string.split),因为您有两个不同的分隔符('('和')')
>>> import string
>>> A = "A Dirty Shame (2004)"
>>> B = A.split('(')[1].split(')')[0]
>>> B
'2004'
请注意,如果字符串中存在任何其他括号,这将不起作用
查找括号内的所有内容:
import re
re.findall('\((.*)\)', 'A Dirty Shame (2004)')[0]
如果标题还包含数字,则此正则表达式将继续有效,例如“回到未来 3 (1986)”)
您可以使用re.search
:
>>> import re
>>> s = "A Dirty Shame (2004)"
>>> myresult = int(re.search(r'\((.*?)\)', s).group(1))
>>> print myresult
2004
.*?
捕获相邻标记内的所有项目。在这种情况下,它获取括号之间的所有内容。\(
匹配第一个左括号。我们必须将其转义(通过添加反斜杠),因为括号已经是正则表达式中的其他内容 - 分组标记,我们使用它来获取括号之间的所有内容。然后我们在另一边做相反的事情。
re.search()
如果正则表达式匹配字符串中的任何内容,则返回匹配项。既然它已经这样做了,我们呼吁.group(1)
年底获得 2004 年。
最后,我们将它括int()
起来以将字符串转换"2004"
为整数2004
。