如何打印列表元素,直到达到某个元素

时间:2014-03-09 21:17:07

标签: python list

我是一个蟒蛇初学者试图编写一个程序,打印出电视飞行员的每一行(txt文件),如果该行是对话。

角色名称将始终立即进行对话块(可以是一行或多行)。并且总会有一个空白行表示对话块的结束。我将脚本的每一行都作为script_list的一个元素。我将所有字符名称作为character_list的元素。可能有更好的方法来解决这个问题,但是现在我正在尝试找到一个python命令,它可以识别script_list的一个元素何时是一个字符名,然后打印出script_list的后续元素,直到它到达一个空行。

作为一个例子,对于以下脚本,我只想打印:“看起来她又迟到了。”然后打印出鲍勃对话的每一行。

  

ACT I

     

INT。办公室会议室 - 早上好

     鲍勃和约翰不安地盯着对方。 < - 不对话。

     

BOB看起来她又迟到了。 < - 对话立即继续进行   说话的人物。

     约翰瞥了一眼手表。

     

JOHN [多行多行的文本块]

     莎拉走进房间。

2 个答案:

答案 0 :(得分:0)

我想你想要这样的东西:

if any(line.startswith(name) for name in character_list):

如果True启动列表中的任何名称,则为line。这假定您的列表全部为大写,否则您将匹配“阶段方向”,也以名称开头。

您可以设置dialogue = True标记,然后在到达空白行时重置它。

答案 1 :(得分:0)

只是为了让你离开这里:

characterNames = ["JOHN", "BOB", "SARAH"]
play = ["These are stage directions", "BOB This is printed", "This is case sensitive, Sarah"]

for line in play:
    for name in characterNames:
        if name in line:
            print(line)

请注意,这假设您没有在对话框中使用完整上限。