增加Python中的分割索引

时间:2013-03-01 18:08:57

标签: python indexing split

好吧,我在Python脚本中遇到问题,我需要做的是,split函数的索引会随着循环的每次迭代自动增加。我这样做:

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 个答案:

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

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

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

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

答案 3 :(得分: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" )