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
野生动物的温度&个体性
我在这里要做的是,找到大写的行,并把它们放在一起 全部在阵列中。然后,使用索引方法,我会找到第一个 通过比较这些指数的每个部分的最后几段 我创建的这个数组的元素。
答案 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