如何使用python

时间:2017-05-21 09:17:20

标签: python python-2.7 python-3.x

我有一个文本文件如下。

  l[0]l[1]l[2]l[3]l[4]l[5]l[6]
-----------------------------------
1| abc is a book and cba too
2| xyz is a pencil and zyx too
3| def is a pen and fed too
4| aaa is

实际档案是:

 abc is a book and cba too
 xyz is a pencil and zyx too
 def is a pen and fed too
 aaa is

我正在使用以下代码对此文本文件执行操作:

import sys
fr = open("example.txt",'r')
for l in fr:
     if(l[3] is "book" or l[3] is "pencil")
          Then do something
     if(l([3] is "pen")
           Then do something
fr.close()

当我尝试执行此程序时,我收到的错误就像

Traceback(most recent call last):
File "abc.py" line 4 in <module>
if(l[3] is "book" or l[3] is "pencil"):
IndexError: list index error out of range

因为根据上一行中的上述文本文件(即第4行),l [3]

没有任何内容

l [0] l [1] l [2] l [3] l [4] l [5] l [6]
 aaa是

这里第4行l [3]为空。 所以我的问题是当l [3]为空时如何跳过这一行? 我们可以像下面那样露营吗?

if(l[3] ==""):
     continue

请有人帮我。

4 个答案:

答案 0 :(得分:1)

您可以在for循环开始时验证列表长度,如果没有第3个元素,则可以验证continue

if len(l)< 3: continue

PS。当然,您必须先l.split()行,否则您只能访问单个字符。

答案 1 :(得分:1)

您可以检查单词数组的长度。

但是请注意,当你直接在set a = Description.Create a("micclass").value = "WebElement" a("class").value = "sbqs_c" a("html tag").value = "DIV" set b = Browser("creationtime:=0").Page("title:=.*").ChildObjects(‌​a) MsgBox b.Count For i = 0 To b.count-1 Step 1 If b(i).GetROProperty("text")="lic" Then Browser("creationtime:=0").Page("title:=.*").WebElement("c‌​lass:=sbqs_c","html tag:=DIV","index:=0").Click End If Next 上编制索引时,你就会在角色级别而不是你想要的单词级别。另外,我使用l代替==

做这样的事情:

is

答案 2 :(得分:1)

当使用for l in fr python时,不会返回一个数组,而是为每一行返回一个字符串,你必须在循环中处理它。使用l.strip().split()将为您提供一个字符串数组,其中字符串将等于一个单词。

然后,is用于比较对象类型,例如is this line a string ? or an int ?。所以你不能在这里使用它。使用==比较两个相同类型的对象。

编辑:一些示例代码

import sys
fr = open("example.txt",'r')

for l in fr:
    word = l.strip().split()
    if word[3] == "book" or word[3] == "pencil":
        # Do something
    elif word[3] == "pen":
        # Do something

fr.close()

答案 3 :(得分:0)

您可以计算单词的大小:

with open("example.txt", 'r') as example_file:
    for line in example_file:
        words = line.strip().split()
        if len(words) > 3:  # line has more than three words
            if words[3] in ['book', 'pencil']:
                print("4th word is 'book' or 'pencil'")
            elif words[3] == 'pen':
                print("4th word is 'pen'")

输出:

4th word is 'book' or 'pencil'
4th word is 'book' or 'pencil'
4th word is 'pen'