Use re.findall
. The regex:
r'^(.*\S)\s+id:\s*(\d+)\s+type:\s*(.+)'
means:
^
: start of the string..*
:any character, repeated 0 or more times.\S
: non-whitespace character.\s+
: whitespace character, repeated 1 or more times.\d+
: any digit, repeated 1 or more times.(PATTERN)
: capture the patterns and return it. Here we capture 3 patterns.
import re
string = "Wacom Bamboo Connect Pen stylus id: 15 type: STYLUS"
lst = re.findall(r'^(.*\S)\s+id:\s*(\d+)\s+type:\s*(.+)', string)
# The first match (list element) is a tuple. Extract it:
lst = list(lst[0])
lst[1] = int(lst[1])
print(lst)
# ['Wacom Bamboo Connect Pen stylus', 15, 'STYLUS']
2
solved How to find data in string? [closed]