我已经使用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
答案 0 :(得分:2)
我认为这样做的方法如下:
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']]
或使用列表推导(稍微不那么可读):
txt = """HE went to the SHOP
THE SHOP HE went"""
print([re.findall(r'[A-Z]+', s) for s in txt.split('\n')])
答案 1 :(得分:0)
如果您的数据真的是那种形式(单词完全大写),您甚至不需要正则表达式。你需要isupper。
with open('findallEX.txt') as f:
for line in f.readlines():
print [word for word in line.split() if word.isupper()]
添加了一个示例。