2014-10-10 68 views
-2

我有一個字符串數組:的Python - 搜索字符串數組

["aaa 1", "aaa 2", "bbb 2", "ccc 3", "ddd 4"] 

我需要尋找在此向量一些字符串,但只有第一部分。例如,我需要從"aaa"開始的字符串的位置(在本例中,這將是0和1)。

我如何做到這一點?

回答

2

您可以使用list comprehensionenumeratestr.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] 
2

我們enumeratestr.startswith

>>> 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] 
0

你有一個清單。爲了通過每個項目你可以:

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