如何在字符串中获取特定的整数?:
mystring = "[RUN #1 3%, 2 secs] 2 threads: 6673 ops, 3511 (avg: 3333) ops/sec, 3.60MB/sec (avg: 3.42MB/sec), 0.56 (avg: 0.59) msec latency"
我想在这一行得到3511和0.56
答案 0 :(得分:4)
或者你不能在这种情况下使用正则表达式,它是可维护和可读的:
line = "[RUN #1 3%, 2 secs] 2 threads: 6673 ops, 3511 (avg: 3333) ops/sec, 3.60MB/sec (avg: 3.42MB/sec), 0.56 (avg: 0.59) msec latency"
answer = line.split()
print answer[9], answer[16]
答案 1 :(得分:1)
从regular expression documentation开始,您可以尝试:
import re
s = '[RUN #1 3%, 2 secs] 2 threads: 6673 ops, 3511 (avg: 3333) ops/sec, 3.60MB/sec (avg: 3.42MB/sec), 0.56 (avg: 0.59) msec latency'
number_of_operations = int(re.search(r'ops,\s*([0-9]+)', s).group(1))
latency = float(re.search(r"sec\), ([-+]?\d*\.\d+|\d+) \(avg", s).group(1))
答案 2 :(得分:0)
您可以使用regex。如果您有多个空格和/或通常不确定字符串的确切结构,可能更容易直接提取您想要的数字(例如在Guillaume Jacquenot's answer中)但是分两步执行:
首先从字符串中删除所有浮点数:
http://localhost:9000
然后选择您要查找的:
import re
mystring = "[RUN #1 3%, 2 secs] 2 threads: 6673 ops, 3511 (avg: 3333) ops/sec, 3.60MB/sec (avg: 3.42MB/sec), 0.56 (avg: 0.59) msec latency"
all_numbers = map(float, re.findall(r'[+-]?[0-9.]+', mystring))