String Variable什么都不返回

时间:2013-07-01 16:27:05

标签: python split

我做了一个简单的程序:

Query = raw_input('Keyword: ')
QuerySplit = Query.Split()
QSL = len(QuerySplit)
l=0
string = "Search contains keyword"
for i in dem:
      for k in range (l and (QSL-1)):
           if QuerySplit[k] in i.text:
                   print string 
Dem有几个段落。这里没什么特别的。 这个逻辑基本上是如果我搜索一个术语,即使存在一个搜索的术语,程序也会返回一个字符串。尽管文本中有“搜索术语”,但这甚至都没有被返回过。

2 个答案:

答案 0 :(得分:3)

range (l and (QSL-1))应为range(QSL)

l and (QSL-1)实际上将评估为0,因为and条件会在第一个Falsy值处短路并返回该值。如果所有项目都是True值,则返回最后一项。

>>> 0 and 2
0
>>> 1 and 2
2
>>> 1 and 0 and 3
0
>>> 1 and 2 and 3
3

在python中,你可以迭代列表本身,不需要索引:

for strs in QuerySplit:
    if strs in i.text:
        print string 

range

>>> range(4)
[0, 1, 2, 3]
>>> range(2)
[0, 1]

range上的帮助:

range(stop) -> list of integers
range(start, stop[, step]) -> list of integers

Return a list containing an arithmetic progression of integers.
range(i, j) returns [i, i+1, i+2, ..., j-1]; start (!) defaults to 0.
When step is given, it specifies the increment (or decrement).
For example, range(4) returns [0, 1, 2, 3].  The end point is omitted!
These are exactly the valid indices for a list of 4 elements.

答案 1 :(得分:1)

我认为使用集合交集(QuerySplit和i.text),并查看结果是否是不相交/不相交将完成这项工作。

Query = raw_input('Keyword: ')
QuerySplit = Query.Split()
QuerySplitSet = set(QuerySplit)
string = "Search contains keyword"
for i in dem:
    if (not QuerySplitSet.isdisjoint(set(i.text))):
        print string