在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()]