【问题标题】:How to extract quoted statements in a text file -- Python如何在文本文件中提取引用的语句——Python
【发布时间】:2020-11-30 23:05:39
【问题描述】:

我想在一个文本文件中查找所有引用的语句。我写了一个代码,它可以找到第一个引用的语句。但是,当我使用 while 循环 时,它可以遍历整个文本并找到它们,但它不起作用。 这是代码:

        quoteStart = fullText.index("\"")
        quoteEnd = fullText.index("\"", quoteStart + 1)
        quotedText = fullText[quoteStart:quoteEnd+1]
        print ("{}:{}".format(quoteStart, quoteEnd))
        print (quotedText)

输出:

250:338

"When we talk about the Hiroshima and Nagasaki bombing, we never talk about Shinkolobwe,"

如何添加 while 循环来遍历整个文本?

【问题讨论】:

    标签: python text while-loop quotes


    【解决方案1】:

    提供一个最小的工作示例总是好的,即如果您提供fullText 中的内容的示例,它将更容易回答这个问题。

    您不需要while 循环来执行此操作。正则表达式将是一个更简单的解决方案。

    让我们假设, fullText = '"When we talk about the Hiroshima and Nagasaki bombing, we never talk about Shinkolobwe," was what one said and "I agree." was what another said.'

    你可以使用如下的正则表达式。

    import re
    
    quotedText = re.findall(r'"([^"]*)"', fullText)
    
    print(quotedText)
    

    结果:

    ['When we talk about the Hiroshima and Nagasaki bombing, we never talk about Shinkolobwe,', 'I agree.']

    r'"([^"]*)"' 是一个原始字符串,它表示一个正则表达式,用于匹配任何出现次数的任何内容,但两个双引号之间的双引号除外。

    一个很好的解释是here

    【讨论】:

      【解决方案2】:

      我认为你的问题是 quoteStart = fullText.index("\"") 将始终在您的文本前面开始。

      尝试以下方法:

      quoteEnd = -1
      
      while True:
          try:
              quoteStart = fullText.index("\"", quoteEnd+1)
              quoteEnd = fullText.index("\"", quoteStart + 1)
          except ValueError:
              break
              
          quotedText = fullText[quoteStart:quoteEnd+1]
          print ("{}:{}".format(quoteStart, quoteEnd))
          print (quotedText)
      
      

      【讨论】:

      • 您能解释一下为什么使用 (quoteEnd = -1) 吗?我真的不明白:\
      • 因为我总是通过在位置quoteEnd+1 之后寻找下一个引号来开始循环,并且我希望第一次从位置0 开始,所以我必须设置初始quoteEnd=-1
      猜你喜欢
      • 1970-01-01
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 2018-01-21
      • 2021-01-21
      • 1970-01-01
      • 2013-07-14
      相关资源
      最近更新 更多