从文本文件

时间:2015-12-30 14:21:00

标签: python

try:
    fileName = 'C:\pro.txt'
    textF = open(fileName, 'r')
    lines = textF.read()
except IOError:
    print("Not found")

paragraph = lines.split('\n\n')
paragraph[:] = (words for words in paragraph if words != '\t')

for w in paragraph:
    if w.isupper() == True:
        paragraphUpper = []
        paragraphUpper.extend([w])
        print(paragraphUpper[0])

大家好,所以我对从文本文件中添加几个元素到列表有一点问题。在这段代码中,我设法找到所有大写行,但当我尝试将它们作为新元素逐个添加到我的列表中时,它不会发生。它将整体添加为数组的第一个元素。如何设置将线条添加为新元素?

我试过通过分割线拆分w。我试过将段落分成一行而不是两行换行,但它仍然只在列表中添加一个元素。

以下是文本文件的摘录:

  

     

LAY OF THE LAND

     

有一大片令人着迷的人类兴趣,只是说谎   在我们门外,到目前为止一直没有被探索过。它是   动物智能领域。

     

在研究世界的各种兴趣中   野生动物,没有一个超越他们的思想研究,   他们的道德,以及他们作为他们的结果所表现的行为   心理过程。

     

在这些页面中,术语“动物”并未用于其最常见的和   最受限制的意义。它不仅适用于四足动物,   还有所有脊椎动物形式, - 哺乳动物,鸟类,爬行动物,   两栖动物和鱼类。

     

II

     

野生动物的温度&个体性

     

我在这里要做的是,找到大写的行,并把它们放在一起   全部在阵列中。然后,使用索引方法,我会找到第一个   通过比较这些指数的每个部分的最后几段   我创建的这个数组的元素。

3 个答案:

答案 0 :(得分:1)

如评论中所述,使用f.readlines();将文件拆分为行列表。

您的代码中还有其他一些奇怪的东西:

  • 列表理解不需要paragraph[:];只需使用paragraph = ...重新分配变量。

  • 请勿与True进行比较,只需执行if w.isupper():

  • 每次循环时,您都会将paragraphUpper重新定义为新的空列表;所以它只会包含一个元素。您需要在for语句之前创建一次。

  • 不要将单个项目包装在列表中以执行paragraphUpper.extend([w]),只需执行paragraphUpper.append(w)

  • 使用一致的缩进;前几行的缩进为4个空格,最后的循环只有1的缩进.Python标准是4。

答案 1 :(得分:0)

要获得大写行,请使用:

 try:
     fileName = 'C:\pro.txt'
     textF = open(fileName,'r')
     lines = textF.readlines()
  except IOError:
     print("Not found")
 UpperLines = []
 for line in lines:
     if line.isupper():
         UpperLines.append(line)
         print(line)

答案 2 :(得分:0)

您可以轻松地使用一个列表推导来解决此问题。如果您切换到readlines(),则paragraph[:] = ...行无效。这将满足您的需求:

try:
    fileName = 'C:\pro.txt'
    textF = open(fileName, 'r')
    paragraph = textF.readlines()
except IOError:
    print("Not found")

paragraphUpper = [w.strip() for w in paragraph if w.isupper()]
print paragraphUpper