在某些元素不等于z的字符串数组中查找字符串

2024-04-27 12:20:22 发布

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

我有一个字符串数组。如何找到不等于零的元素并打印这些字符串?我怎样才能做好呢?你知道吗

这就是我想看到的:

Port        Align-Err     FCS-Err    Xmit-Err     Rcv-Err  UnderSize  OutDiscards "
Gi0/16              0         116           0         116          0           56
Gi0/3               0           0           23          0          0       315887
Po1                 0      232464           0      232464          0     21331230

我的阵列:

array = [
        "Port        Align-Err     FCS-Err    Xmit-Err     Rcv-Err  UnderSize  OutDiscards ", 
        "Gi0/1               0           0           0           0          0       212086 ", 
        "Gi0/2               0           0           0           0          0       184832 ", 
        "Gi0/3               0           0           23          0          0       315887 ", 
        "Gi0/4               0           0           0           0          0       253439 ", 
        "Gi0/5               0           0           0           0          0       135034 ", 
        "Gi0/6               0           0           0           0          0       132617 ", 
        "Gi0/7               0           0           0           0          0         5816 ", 
        "Gi0/8               0           0           0           0          0        12266 ", 
        "Gi0/9               0           0           0           0          0       573217 ", 
        "Gi0/10              0           0           0           0          0       844880 ", 
        "Gi0/11              0           0           0           0          0       264766 ", 
        "Gi0/12              0           0           0           0          0       197496 ", 
        "Gi0/13              0           0           0           0          0            0 ", 
        "Gi0/14              0           0           0           0          0       372725 ", 
        "Gi0/15              0           0           0           0          0     14260434 ", 
        "Gi0/16              0         116           0         116          0           56 ", 
        "Gi0/17              0           0           0           0          0      6905901 ", 
        "Gi0/18              0           0           0           0          0       333387 ", 
        "Po1                 0      232464           0      232464          0     21331230 ", 
]

Tags: 字符串元素port数组arrayerrfcsalign
3条回答
ll= [ x.split() for x in array]
df = pd.DataFrame(ll)
df.columns = df.iloc[0]
df = df.reindex(df.index.drop(0))
df[['Align-Err', 'FCS-Err', 'Xmit-Err', 'Rcv-Err', 'UnderSize', 'OutDiscards']] = df[['Align-Err', 'FCS-Err', 'Xmit-Err', 'Rcv-Err', 'UnderSize', 'OutDiscards']].astype(int)

我不知道你想在哪个部分找到不等于0的元素。什么元素?什么专栏?每一行都是零。你知道吗

df = df[df != 0].dropna()

以下是我可以建议的两种方法:

1。简单for循环,这里我忽略了第一个和最后一个元素:(我猜这就是您需要的)

for i in array:
    if any(x!="0" for x in i.split()[1:-1]): # here 1:-1 are the range where we are checking the values, you can edit it as per your need
        print (i)

2。同样使用列表理解

print ([i for i in array if any(x!="0" for x in i.split()[1:-1])])

输出:

Port        Align-Err     FCS-Err    Xmit-Err     Rcv-Err  UnderSize  OutDiscards 
Gi0/3               0           0           23          0          0       315887 
Gi0/16              0         116           0         116          0           56 
Po1                 0      232464           0      232464          0     21331230 

增加了按要求操作的功能方式:

def getErrorList(array):
    return [i for i in array if any(x!="0" for x in i.split()[1:-2])] #check the range [1:-2] carefully. Use it as per your need.

print (getErrorList(array)) #take it in a variable for further processing
# your code goes here
array = [
        'Port        Align-Err     FCS-Err    Xmit-Err     Rcv-Err  UnderSize  OutDiscards ', 
        'Gi0/1               0           0           0           0          0       212086 ', 
        'Gi0/2               0           0           0           0          0       184832 ', 
        'Gi0/3               0           0           23          0          0       315887 ', 
        'Gi0/4               0           0           0           0          0       253439 ', 
        'Gi0/5               0           0           0           0          0       135034 ', 
        'Gi0/6               0           0           0           0          0       132617 ', 
        'Gi0/7               0           0           0           0          0         5816 ', 
        'Gi0/8               0           0           0           0          0        12266 ', 
        'Gi0/9               0           0           0           0          0       573217 ', 
        'Gi0/10              0           0           0           0          0       844880 ', 
        'Gi0/11              0           0           0           0          0       264766 ', 
        'Gi0/12              0           0           0           0          0       197496 ', 
        'Gi0/13              0           0           0           0          0            0 ', 
        'Gi0/14              0           0           0           0          0       372725 ', 
        'Gi0/15              0           0           0           0          0     14260434 ', 
        'Gi0/16              0         116           0         116          0           56 ', 
        'Gi0/17              0           0           0           0          0      6905901 ', 
        'Gi0/18              0           0           0           0          0       333387 ', 
        'Po1                 0      232464           0      232464          0     21331230 ', 
]

# Splits at space 
for row in array:
    rowData = row.split()
    if(rowData[2] != '0'):
        print(row)

这就产生了

Port        Align-Err     FCS-Err    Xmit-Err     Rcv-Err  UnderSize  OutDiscards   
Gi0/16              0         116           0         116          0           56   
Po1                 0      232464           0      232464          0     21331230 

相关问题 更多 >