[英]How to print only a certain part of elements from a list in python?
所以我有一個清單:
['13:57:09.273 0,Type=IsXover Count=4,mcuTs=0x000265C7,lp-isD=1',
'13:57:09.341 1,Type=Xover Count=47,mcuTs=0x0002660A,lp-isD=0',
'13:57:15.389 0,Type=Xover Count=48,mcuTs=0x00027D87,lp-isD=1']
我想做一些事情,例如在每個元素中查找“ over”,然后打印一個從“ over”開始直到下一個逗號的字符串。 因此結果應如下所示:
['over Count=4','over Count=47','over Count=48']
如果我直接從文件中讀取,我可以使用“ rfind()”來執行此操作,但是由於列表中沒有“ rfind()”,我想知道是否還有另一種方法可以執行此操作?
一種簡單的方法是:
list = ['13:57:09.273 0,Type=IsXover Count=4,mcuTs=0x000265C7,lp-isD=1',
'13:57:09.341 1,Type=Xover Count=47,mcuTs=0x0002660A,lp-isD=0',
'13:57:15.389 0,Type=Xover Count=48,mcuTs=0x00027D87,lp-isD=1']
result = []
for string in list:
for index, sub_string in enumerate(string.split(',')):
if index == 1:
result.append(sub_string[sub_string.find('over'):])
print(result)
此代碼的列表理解版本不像上面的代碼那樣可讀,但是無論哪種方式:
result = [sub_string[sub_string.find('over'):] for string in list for index, sub_string in enumerate(sub_string.split(',')) if index == 1]
print(result)
這兩個代碼段都將給出預期的結果
['over Count=4','over Count=47','over Count=48']
您可以使用正則表達式解決問題:
import re
Structure = ['13:57:09.273 0,Type=IsXover Count=4,mcuTs=0x000265C7,lp-isD=1',
'13:57:09.341 1,Type=Xover Count=47,mcuTs=0x0002660A,lp-isD=0',
'13:57:15.389 0,Type=Xover Count=48,mcuTs=0x00027D87,lp-isD=1']
Counts = []
for element in Structure:
sub_array = element.split(",")
valid = re.match(r"^.*(over Count=(\d+))", sub_array[1].strip())
Counts.append(valid.group(1))
print(Counts)
哪個會打印:
['over Count=4', 'over Count=47', 'over Count=48']
不使用正則表達式,我們可以使用字符串方法:
a = ['13:57:09.273 0,Type=IsXover Count=4,mcuTs=0x000265C7,lp-isD=1',
'13:57:09.341 1,Type=Xover Count=47,mcuTs=0x0002660A,lp-isD=0',
'13:57:15.389 0,Type=Xover Count=48,mcuTs=0x00027D87,lp-isD=1']
b = []
for s in a:
i1 = s.find('over')
i2 = s.find(',', i1)
b.append(s[i1:i2])
print(b)
給
['over Count=4', 'over Count=47', 'over Count=48']
或者,如果您想要單行列表理解:
[s[s.find('over'):s.find(',', s.find('over'))] for s in a]
這里的技巧是字符串的find
方法返回給定子字符串的開頭的索引,如果我們提供第二個參數,則從該整數開始搜索。
可以幫你嗎
itemList = ['13:57:09.273 0,Type=IsXover Count=4,mcuTs=0x000265C7,lp-isD=1',
'13:57:09.341 1,Type=Xover Count=47,mcuTs=0x0002660A,lp-isD=0',
'13:57:15.389 0,Type=Xover Count=48,mcuTs=0x00027D87,lp-isD=1']
for item in itemList:
if ‘over’ in item:
indexi = item.find(‘over’)
indexy = item.find(‘,mcuTs’)
print(item[indexi:indexy]
您可以使用split
兩次,並將結果與over
連接:
inList = ['13:57:09.273 0,Type=IsXover Count=4,mcuTs=0x000265C7,lp-isD=1',
'13:57:09.341 1,Type=Xover Count=47,mcuTs=0x0002660A,lp-isD=0',
'13:57:15.389 0,Type=Xover Count=48,mcuTs=0x00027D87,lp-isD=1']
newList = ['over' + elem.split(',')[1].split('over')[1] for elem in inList]
print(newList)
輸出:
['over Count=4', 'over Count=47', 'over Count=48']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.