僅使用 for 回圈和 split 方法,我想計算名為 my_list 的字串上有多少 IP 地址。
my_list = \
'''
inet addr :127.0.0.1 Mask:255.0.0.0
inet addr :127.0.0.2 Mask:255.0.0.0
inet addr :127.0.0.3 Mask:255.0.0.0
inet addr :127.0.0.4 Mask:255.0.0.0
'''
count = 0
for i in my_list : #this is the for loop but it returns 0 instead of 4
if i == "127" :
count = count 1
print(count)
我覺得我錯過了一些東西,但我無法弄清楚。感謝您的任何幫助
uj5u.com熱心網友回復:
只是為了記錄,str有一個count方法。
>>> my_list = \
... '''
... inet addr :127.0.0.1 Mask:255.0.0.0
... inet addr :127.0.0.2 Mask:255.0.0.0
...
... inet addr :127.0.0.3 Mask:255.0.0.0
... inet addr :127.0.0.4 Mask:255.0.0.0
... '''
>>> my_list.count('inet')
4
uj5u.com熱心網友回復:
您可以簡單地將字串拆分為每個“inet”單詞并計算元素。
計數減一,因為 split 將在第一次出現之前創建一個空字串 "inet"
my_string = """ inet addr :127.0.0.1 Mask:255.0.0.0 inet addr :127.0.0.2 Mask:255.0.0.0 inet addr :127.0.0.3 Mask:255.0.0.0 inet addr :127.0.0.4 Mask:255.0.0.0
"""
count = len(my_string.strip().split("inet")) - 1
print(count)
運行時:
4
編輯:正如前面的評論中提到的,它不是一個串列,而是一個字串。您的for回圈遍歷該字串的每個字符。由于字符 can't be inet,因此條件始終是False并且計數不會增加。
uj5u.com熱心網友回復:
qkzk 發布的答案有效且簡單得多,但發布此答案是因為您想使用 for 回圈。
my_list = \
'''
inet addr :127.0.0.1 Mask:255.0.0.0
inet addr :127.0.0.2 Mask:255.0.0.0
inet addr :127.0.0.3 Mask:255.0.0.0
inet addr :127.0.0.4 Mask:255.0.0.0
'''
# split the string at each end of line to convert it to a list of string
my_list_of_strings = my_list.split('\n')
count = 0
for string in my_list_of_strings:
if "127" in string : # check if '127' is in string
count = count 1
print(count)
輸出
4
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/407632.html
標籤:
