Python - 在数组中搜索字符串

时间:2014-10-10 20:09:55

标签: python arrays string

我有一个字符串数组:

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

我需要在此向量中搜索一些字符串,但只搜索第一部分。例如,我需要以"aaa"开头的字符串的位置(在这个例子中,它将是0和1)。

我该怎么做?

3 个答案:

答案 0 :(得分: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]

答案 1 :(得分: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",或者使用in只使用上半部分的子字符串将是最有效的

[ind for ind, ele in enumerate(l) if "aaa" in ele]

答案 2 :(得分: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