Python没有';我不知道该停下来

Python没有';我不知道该停下来,python,pandas,Python,Pandas,简单代码不起作用,我正在寻求帮助 df有44000行xml格式的聊天对话。根/子结构如下所示。我需要从一行/聊天记录中抓取所有“”条目,并加入到一个字符串中;此输出将转到数据帧内的变量“test”。我的代码可以工作,但循环不会停止。我知道它是有效的,因为当我用超时代码停止循环并检查数据帧时,它正在做它应该做的事情。我只是希望代码能够正常工作,而不必使用timeout语句 <chat> <messages> <chat-message> <time

简单代码不起作用,我正在寻求帮助

df有44000行xml格式的聊天对话。根/子结构如下所示。我需要从一行/聊天记录中抓取所有“”条目,并加入到一个字符串中;此输出将转到数据帧内的变量“test”。我的代码可以工作,但循环不会停止。我知道它是有效的,因为当我用超时代码停止循环并检查数据帧时,它正在做它应该做的事情。我只是希望代码能够正常工作,而不必使用timeout语句

 <chat>
 <messages>
 <chat-message>
 <timestamp>2017-08-22T15:08:35.906-04:00</timestamp> 
  <name /> 
  <body>Hello Mikey, I see you want to chat with us today about: Account    
  Assistance. If you are chatting on a mobile device or tablet, your        
  session will end if you navigate away from the chat window. A 
  representative will be with you momentarily.
  </body> 
  <usertype>system</usertype> 
  </chat-message>
  <chat-message>

def msgg(row):
    root = ET.fromstring(row)
    toad = ['the'] #Saving something in toad since python will not let you append to an empty list   
    for body in root.findall('messages/chat-message/body'):
         toad.append(body.text)    
    return toad

timeout = time.time() + 60*10    

for row in df5['chat']:
      df5['test'] = df5['chat'].apply(msgg)
      if time.time() > timeout: break
代码块,程序将继续运行。我可以用中断代码让它运行1分钟,结果数据集就完成了。如果没有中断,它将运行1小时(可能更长,但我在一小时后点击了红色的停止框。有没有关于python即使完成了也不会停止的想法?提前谢谢

附言:如果有人想尖叫这是一篇重复的文章,并主张删除它,请注意这是一个不同的问题。我的另一篇文章是关于处理解析错误。这是关于处理一个坏循环

试过这个

for index,row in df5.iterrows():
    row['test'] = row['chat'].apply(msgg)
并且得到了一个

AttributeError: 'str' object has no attribute 'apply'
试过这个

for index,row in df5.itertuples():
    row['test'][index] = row['chat'][index].apply(msgg)
得到

ValueError: too many values to unpack (expected 2)

这就是我想要的:

将xml.etree.ElementTree作为ET导入 将lxml.etree作为et2导入

def msgg(row):
    parser = et2.XMLParser(recover=True)
    root = ET.fromstring(row, parser=parser)
    toad = ['the '] 
    for body in root.findall('messages/chat-message/body'):
      toad.append(body.text)
return "".join(toad)

for row in range(df5.shape[0]):
  if re.findall(r"xml version=",df5['chat'][row]):            
    df5['test'][row] = msgg(df5['chat'][row])

考虑到答案的简单性,考虑到缺乏回答,我想我在提出这个问题时做得很差。感谢所有试图帮助我的人。

你确定你的循环做了它应该做的事情吗?你甚至没有使用
变量…请修复你的缩进。不可能知道一个块的结尾和它的位置e下一步开始…#在toad中保存一些东西,因为python不允许您附加到空列表???@Felix,我想知道这可能是问题所在。行保持在某个值,for循环将永远消失。我尝试在apply行之后添加一行+行,但不起作用。可能是长时间运行的循环在msgg中吗?
def msgg(row):
    parser = et2.XMLParser(recover=True)
    root = ET.fromstring(row, parser=parser)
    toad = ['the '] 
    for body in root.findall('messages/chat-message/body'):
      toad.append(body.text)
return "".join(toad)

for row in range(df5.shape[0]):
  if re.findall(r"xml version=",df5['chat'][row]):            
    df5['test'][row] = msgg(df5['chat'][row])