好吧,我在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”必须增加......
循环中有什么问题?
谢谢!
答案 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" )