1

好吧,我在 Python 脚本中有一个问题,我需要做的是拆分函数的索引随着循环的每次迭代而自动增加。我这样做:

tag = "\'"
while loop<=302:
        for line in f1.readlines():
            if tag in line:
                word = line.split(tag)[num] #num is the index I need to increase

        text = "Word: "+word+"."

        f.write(text)

        num = num + 1
        loop = loop + 1

但是......索引上的“num”变量没有改变......它只是保持不变。num 索引表示我需要取的单词。所以这就是为什么“num = num + 1”必须增加......

循环中的问题是什么?

谢谢!

4

4 回答 4

0

你的问题令人困惑。但我认为你想num = num + 1进入 for 循环和 if 语句。

tag = "\'"
while loop<=302:
    for line in f1.readlines():
        if tag in line:
            word = line.split(tag)[num] #num is the index I need to increase
            num = num + 1

    text = "Word: "+word+"."

    f.write(text)
    loop = loop + 1
于 2013-03-01T18:13:57.133 回答
0

正如您在评论中提到的,我对您的问题有不同的方法。考虑 input.txt 有以下条目:

this is a an input file.

那么以下代码将为您提供所需的输出

lines = []
with open (r'C:\temp\input.txt' , 'r') as fh:
    lines = fh.read()

with open (r'C:\temp\outputfile.txt' , 'w') as fh1:
    for words in lines.split():
        fh1.write("Words:"+ words+ "\n" )
于 2013-03-01T18:31:17.637 回答
0

根据 Benyi 在问题中的评论 - 你只想要单个句子吗?您可能不需要索引。

>>> mystring = 'hello i am a string'
>>> for word in mystring.split():
         print 'Word: ',word


Word:  hello
Word:  i
Word:  am
Word:  a
Word:  string
于 2013-03-01T18:21:10.717 回答
0

这似乎有很多问题。
第一的

while loop <= 302:
   for line in f1.readlines():

f1.readlines() 在第一次之后的每次迭代中都将是 []

第二

for line in f1.readline():
   word = line.split(tag)[num]
   ...
text = "Word: "+word+"."

即使您使 for 循环工作,text也将始终使用word. 也许这是期望的行为,但这似乎很奇怪。

第三

while loop<=302:
    ...
    loop = loop += 1

似乎它会更好地写成

for _ in xrange(302):

由于在该范围内根本不使用循环。这是假设循环从 0 开始,如果不是,那么您只需将 302 调整为您想要的迭代次数。

最后

num = num + 1

f1.readlines()这在您的内部循环之外,因此第一次迭代的 num 将始终相同,然后因为前面所述的空而后者无关紧要。

于 2013-03-01T18:21:54.300 回答