string.split(separator,max)的解释

我具有此功能来获取linux上的CPU使用率, 而split函数使我感到困惑。

    try:
    pipe = os.popen("ps aux --sort -%cpu,-rss")
    data = pipe.read().strip().split('\n')
    print(data)
    pipe.close()
    usage = [i.split(None,10) for i in data]
    print(usage)
    del usage[0]

    total_usage = []

    for element in usage:
        usage_cpu = element[2]
        total_usage.append(usage_cpu)

    total_usage = sum(float(i) for i in total_usage)

    total_free = ((100 * int(get_cpus()['cpus'])) - float(total_usage))

    cpu_used = {'free': total_free,'used': float(total_usage)}

    data = cpu_used

except Exception as err:
    data = str(err)

return data

我需要了解这条线   用法= [i.split(None,10)for i in data]

预先感谢

shenhaizhe 回答:string.split(separator,max)的解释

嗯,split函数有两个参数,分别是seperatormaxsplit,两者都是可选的。因此,现在i遍历data,然后进行无分隔符分割和10次最大分割。 参考来自:https://www.w3schools.com/python/ref_string_split.asp

,

split的第一个参数(如果未传递或显式传递为None)则告诉它在运行空白时进行拆分(并且不包括用于前导空白的空组,尽管尾随空格只是如果您尚未达到separator的限制,则从最后一组中删除)。第二个参数限制拆分的次数。因此i.split(None,10)意味着它希望每行最多包含11个文本块(由10个空白块分割),其中第11个块(如果有很多块)被允许包含嵌入式空白(不会分裂)。因此,'1 2 3 4 5 6 7 8 9 10 11 12'.split(None,10)产生['1','2','3','4','5','6','7','8','9','10','11 12'],其中11 12仍被分组为单个字符串,因为告诉split在10个分割后停止分割。

整行只是基于此的列表理解;而不是将一个字符串分割成一个单独的list,而是将所有行从data分割成各个list,并将它们存储在一个外部list中。

本文链接:https://www.f2er.com/3068880.html

大家都在问