我有一個字符串數組:的Python - 搜索字符串數組
["aaa 1", "aaa 2", "bbb 2", "ccc 3", "ddd 4"]
我需要尋找在此向量一些字符串,但只有第一部分。例如,我需要從"aaa"
開始的字符串的位置(在本例中,這將是0和1)。
我如何做到這一點?
我有一個字符串數組:的Python - 搜索字符串數組
["aaa 1", "aaa 2", "bbb 2", "ccc 3", "ddd 4"]
我需要尋找在此向量一些字符串,但只有第一部分。例如,我需要從"aaa"
開始的字符串的位置(在本例中,這將是0和1)。
我如何做到這一點?
您可以使用list comprehension與enumerate
和str.split
:
>>> lst = ["aaa 1", "aaa 2", "bbb 2", "ccc 3", "ddd 4"]
>>> [x for x,y in enumerate(lst) if y.split()[0] == "aaa"]
[0, 1]
>>>
y.split()[0]
將分裂的空間字符串,返回的第一個元素。因此:
if y.split()[0] == "aaa"
只檢查每個字符串的第一部分。然而,如果字符串總是喜歡在你的例子給出的,一個簡單的in
membership test就足夠了:
[x for x,y in enumerate(lst) if "aaa" in y]
>>> l = ["aaa 1", "aaa 2", "bbb 2", "ccc 3", "ddd 4"]
>>> print [ind for ind, ele in enumerate(l) if ele.startswith("aaa")]
[0, 1]
ind
是每個元素在你的列表中的索引,ele
是每個元素,所以如果字符串以「aaa」開頭,我們將索引添加到列表中
如果沒有機會,您將有"aaa"
在seco第二串或只使用in上半年的子串的一半將是最有效的
[ind for ind, ele in enumerate(l) if "aaa" in ele]
你有一個清單。爲了通過每個項目你可以:
for eachlistitem in listname:
if eachlistem[:3] == "ABC": #this only checks first three char of current list item
##do something here like increment a counter
##add counter # to new list to have a list of locations