0

试图搜索这个列表

a = ['1 is the population', '1 isnt the population', '2 is the population']

如果可以实现,我想做的是在列表中搜索值 1。如果值存在,则打印字符串。

如果数字存在,我想要输出的是整个字符串。如果值 1 存在,我想得到的输出打印字符串。IE

1 is the population 
2 isnt the population 

以上是我想要的输出,但我不知道如何得到它。是否可以在列表及其字符串中搜索值 1,如果出现值 1,则获取字符串输出

4

6 回答 6

3
for i in a:
    if "1" in i:
        print(i)
于 2013-06-05T08:50:21.257 回答
1

你应该regex在这里使用:

in也将为此类字符串返回 True 。

>>> '1' in '21 is the population'
True

代码:

>>> a = ['1 is the population', '1 isnt the population', '2 is the population']
>>> import re
>>> for item in a:
...     if re.search(r'\b1\b',item):
...         print item
...         
1 is the population
1 isnt the population
于 2013-06-05T08:55:10.483 回答
0

如果我理解得很好,您希望看到所有以给定数字开头的条目......但重新编号

# The original list
>>> a = ['1 is the population', '1 isnt the population', '2 is the population']

# split each string at the first space in anew list
>>> s = [s.split(' ',1) for s in a]
>>> s
[['1', 'is the population'], ['1', 'isnt the population'], ['2', 'is the population']]

# keep only whose num items == '1'
>>> r = [tail for num, tail in s if num == '1']
>>> r
['is the population', 'isnt the population']

# display with renumbering starting at 1
>>> for n,s in enumerate(r,1):
...   print(n,s)
... 
1 is the population
2 isnt the population

如果您(或您的老师?)喜欢这里的一个班轮是一条捷径:

>>> lst = enumerate((tail for num, tail in (s.split(' ',1) for s in a) if num == '1'),1)
>>> for n,s in lst:
...   print(n,s)
... 
1 is the population
2 isnt the population
于 2013-06-05T12:35:56.627 回答
0

Python 有一个非常方便的 find 方法。如果未找到,则输出 -1 或带有第一个出现位置的 int。这样您就可以搜索超过 1 个字符的字符串。

print [i for i in a if i.find("1") != -1]
于 2013-06-05T09:03:57.367 回答
0
def f(x):
    for i in a:
        if i.strip().startswith(str(x)):
            print i
        else:
            print '%s isnt the population' % (x)

f(1) # or f("1")

这比进行"1" in x样式检查更准确/更具限制性,尤其是如果您的句子在字符串中的其他任何地方都有非语义'1'字符。例如,如果你有一个字符串怎么办"2 is the 1st in the population"

输入数组中有两个语义矛盾的值:

a = ['1 is the population', '1 isnt the population', ... ]

这是故意的吗?

于 2013-06-05T08:51:02.547 回答
0

使用列表推导in检查字符串是否包含“1”字符,例如:

print [i for i in a if "1" in i]

如果您不喜欢 Python 打印列表的方式并且您喜欢将每个匹配项放在单独的行上,则可以将其包装为"\n".join(list)

print "\n".join([i for i in a if "1" in i])
于 2013-06-05T08:52:57.677 回答