简体   繁体   中英

Convert list of one number to int

I have a regular expression that parses a line# string from a log. That line# is then subjected to another regular expression to just extract the line#.

For example:

Part of this regex:

m = re.match(r"^(\d{4}-\d{2}-\d{2}\s*\d{2}:\d{2}:\d{2}),?(\d{3}),?(?:\s+\[(?:[^\]]+)\])+(?<=])(\s+?[A-Z]+\s+?)+(\s?[a-zA-Z0-9\.])+\s?(\((?:\s?\w)+\))\s?(\s?.)+", line)

Will match this:

(line 206)

Then this regex:

re.findall(r'\b\d+\b', linestr)

Gives me

['206']

In order to further process my information I need to have the line number as an integer and am lost for a solution as to how to do that.

You may try:

line_int = int(re.findall(r'\b\d+\b', linestr)[0])

or if you have more than one element in the list:

lines_int = [int(i) for i in re.findall(r'\b\d+\b', linestr)]

or even

lines_int = map(int, re.findall(r'(\b\d+\b)+', linestr))

I hope it helps -^.^-

Use int() to convert your list of one "string number" to an int:

 myl = ['206']
 int(myl[0])
 206

if you have a list of these, you can conver them all to ints using list comprehension :

[int(i) for i in myl]

resulting in a list of ints.

You can hook this into your code as best fits, eg,

int(re.findall(r'\\b\\d+\\b', linestr)[0])

int(re.findall(r'\b\d+\b', linestr)[0])

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM