Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的For循环问题_Python_Loops - Fatal编程技术网

Python中的For循环问题

Python中的For循环问题,python,loops,Python,Loops,我对编程很陌生。我希望能够为列表中的两个条目运行此程序,但对编程了解不够,无法正确执行。这个网站的成员已经帮助我走到了这一步,这个程序对于一组标签非常有效。我想让它运行,这样我就可以在一个过程中搜索多个作者。结果是,它只收集“抖动”的所有信息,然后停止。我只是不知道如何格式化循环以使其正确 以下是我正在使用的代码: authorList = ['Shakes.','Scott'] with open('/Users/Adam/Desktop/Poetrylist.txt','w') as ou

我对编程很陌生。我希望能够为列表中的两个条目运行此程序,但对编程了解不够,无法正确执行。这个网站的成员已经帮助我走到了这一步,这个程序对于一组标签非常有效。我想让它运行,这样我就可以在一个过程中搜索多个作者。结果是,它只收集“抖动”的所有信息,然后停止。我只是不知道如何格式化循环以使其正确

以下是我正在使用的代码:

authorList = ['Shakes.','Scott']

with open('/Users/Adam/Desktop/Poetrylist.txt','w') as output_file:
with open('/Users/Adam/Desktop/2e.txt','r') as open_file:
        the_whole_file = open_file.read()
        start_position = 0
        for x in authorList:
            while True:
               start_position = the_whole_file.find('<A>'+x+'</A>', start_position)
               if start_position < 0:
                   break
               end_position = the_whole_file.find('</W>', start_position)
               output_file.write(the_whole_file[start_position:end_position+4])
               output_file.write("\n")    
               start_position = end_position + 4
authorList=['Shakes.','Scott']
将open('/Users/Adam/Desktop/Poetrylist.txt',w')作为输出文件:
以open('/Users/Adam/Desktop/2e.txt',r')作为open_文件:
整个文件=打开文件。读取()
起始位置=0
对于authorList中的x:
尽管如此:
开始位置=整个文件。查找(“”+x+“”,开始位置)
如果开始位置<0:
打破
结束位置=整个文件。查找(“”,开始位置)
输出文件。写入(整个文件[开始位置:结束位置+4])
输出文件。写入(“\n”)
开始位置=结束位置+4

我确信这是一个非常简单的问题,但我正在尝试自学python,而且进展非常缓慢。

我认为这是因为您没有重置
开始位置;Python中的变量的作用域是它们的封闭函数、类或模块,而不是它们的封闭循环。因此,请尝试添加这一行:

for x in authorList:
    start_position = 0   # Add this
    while True:
这将是一个问题

    start_position = 0
    for x in authorList:
        while True:
对于第一作者,
开始位置
为0。酷


对于第二位作者来说,
起始位置是什么?暗示没有任何操作会将其重置为零。

此操作会一次性处理输入文件:

#!/usr/bin/env python

authorList = ['Shakes.','Scott']
with open('/Users/Adam/Desktop/2e.txt','r') as open_file:
    the_whole_file = open_file.read()
    start_position = 0
    for x in authorList:
        while True:
           start_position = the_whole_file.find('<A>')
           if start_position < 0:
               break
           author_end = the_whole_file.find('</A>', start_position)
           end_position = the_whole_file.find('</W>', start_position)
           if the_whole_file[start+position + 3:author_end] in authorList:
               output_file.write(the_whole_file[start_position:end_position+4])
               output_file.write("\n")    
           start_position = end_position + 4
#/usr/bin/env python
authorList=['Shakes.','Scott']
以open('/Users/Adam/Desktop/2e.txt',r')作为open_文件:
整个文件=打开文件。读取()
起始位置=0
对于authorList中的x:
尽管如此:
开始位置=整个文件。查找(“”)
如果开始位置<0:
打破
author\u end=整个文件。查找(“”,开始位置)
结束位置=整个文件。查找(“”,开始位置)
如果authorList中的整个\u文件[start+position+3:author\u end]:
输出文件。写入(整个文件[开始位置:结束位置+4])
输出文件。写入(“\n”)
开始位置=结束位置+4

它通过扫描作者标记,查看其值是否在作者列表中,并打印到结束标记(如果是)来反转循环。这可能比在每个作者身上循环效率低,因为它必须访问每个标记。

您的文件格式是什么样的?如果我们知道要分析什么,也许我们可以提供帮助。该文件非常类似于xml文件。我正在搜索“Shakes.”和“Scott”的出现情况,然后将以结尾的标记后面的所有信息写入文件。代码对于一个作者来说非常有用,但是我有179个作者要搜索,我想创建一个列表,让程序搜索所有的“Shakes”,然后搜索所有的“Scott”等等。我一周前刚开始编程,我正在尽可能多地学习,我只是不知道for循环应该在哪里,甚至不知道这是否是正确的循环使用方式。谢谢,这完全有道理。我知道这很简单,但我正在边走边学。谢谢你的帮助!现在我明白了,这完全有道理。非常感谢。我保证,当我真正知道任何事情时,我会为这个董事会做出贡献。这里的每个人都帮了大忙。谢谢你,柯克。这也很有帮助。非常感谢。