Python正则表达式:查找下5个字母

2024-04-24 08:19:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似"SW: C000032345RE"的字符串。我正在试着提取下10个字母。你知道吗

所以答案应该是"C000032345RE"。我正试图用两种不同的方法来实现它

Fist是SW:后面的10个字母,或者SW:和RE之间的字母。我正在使用以下脚本

import re 
sub = "SW: C000032345RE"
a= re.search("^SW: (\w)", sub)
a.group(0)

当然,这并没有给我带来想要的结果。每一个帮助都很重要!你知道吗


Tags: 方法字符串答案importre脚本search字母
3条回答

您正在搜索单个单词字符(\w),而您应该搜索其中的10个字符(\w{10})。您还需要group(1)作为括号的内容,而不是group(0),后者是整个匹配项。你知道吗

import re 
sub = "SW: C000032345RE"
a = re.search("^SW: (\w{10})", sub)
a.group(1)

您可能还应该在调用方法之前检查a,因为regex可能不匹配!例如

>>> sub = "SW: C00003..."
>>> a = re.search("^SW: (\w{10})", sub)
>>> a.group(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'

\s*表示零个或多个空格,\w{10}表示10个单字字符:

import re 
sub = "SW: C000032345RE"
a = re.search("^SW:\s*(\w{10})", sub)
print (a.group(1))
C000032345

不使用regex的溶液

In [84]: val = sub.find('SW: ')+len('SW: ')
In [85]: sub[val:val+10]
Out[85]: 'C000032345'

相关问题 更多 >