在python中使用re.findall为每行输出一组参数,而不是一组参数

在python中使用re.findall为每行输出一组参数,而不是一组参数,python,for-loop,findall,Python,For Loop,Findall,我使用了readlines将文件中的所有句子分割开来,我想使用re.findall遍历并找到其中的大写字母。然而,我能得到的唯一输出是所有句子的一组大写字母,但我希望文件中的每个句子都有一组大写字母 目前我正在使用for循环来尝试此操作,但我不确定这是否是执行此任务的最佳操作过程 输入: Line 01: HE went to the SHOP Line 02: THE SHOP HE went 这是我得到的输出: [HE, SHOP, THE] 我想得到输出: [HE, SHOP], [T

我使用了
readlines
将文件中的所有句子分割开来,我想使用
re.findall
遍历并找到其中的大写字母。然而,我能得到的唯一输出是所有句子的一组大写字母,但我希望文件中的每个句子都有一组大写字母

目前我正在使用for循环来尝试此操作,但我不确定这是否是执行此任务的最佳操作过程

输入:

Line 01: HE went to the SHOP
Line 02: THE SHOP HE went
这是我得到的输出:

[HE, SHOP, THE]
我想得到输出:

[HE, SHOP], [THE, SHOP, HE]
有没有办法做到这一点?我已经把我的编码放在下面的一分钟。谢谢

import re, sys

f = open('findallEX.txt', 'r')

lines = f.readlines()

ii=0

for l in lines:
    sys.stdout.write('line %s: %s' %(ii, l))
    ii = ii + 1

for x in l
    re.findall('[A-Z]+', l)
print x

我认为这样做的方法如下:

txt = """HE went to the SHOP
THE SHOP HE went"""

result = []
for s in txt.split('\n'):
    result += [re.findall(r'[A-Z]+', s)]

print(result) # prints [['HE', 'SHOP'], ['THE', 'SHOP', 'HE']] 
或者使用列表理解(可读性稍差):


如果您的数据确实是这种形式的(单词完全大写),那么您甚至不需要正则表达式。这就是你所需要的

with open('findallEX.txt') as f:
    for line in f.readlines():
        print [word for word in line.split() if word.isupper()]

添加了一个示例。

这不是您的确切代码。最后一个for循环每次迭代一行(前一个for循环的最后一行)一个字符。该循环中未打印或分配任何内容。然后打印一个字符。换句话说,此代码不能产生您所说的输出:
[HE,SHOP,the]
。请编辑您的问题,以显示更具代表性的实际代码示例。样式nit:如果循环字符
i
不代表整数,则命名循环字符是个坏主意。在这里,我建议使用
s
line
with open('findallEX.txt') as f:
    for line in f.readlines():
        print [word for word in line.split() if word.isupper()]