2017-06-19 79 views
0

比方说,我有一个文件(.txt)具有:骨料项目首先强调

footest_footest 
footest_footest2 
footest_footest3 
footest_footest6 
bartest_bartest 
bartest_bartest2 
cartest_cartest 
cartest_cartest2 
cartest_cartest5 

使用Python,我怎么可能聚集事件的第一个下划线所以它打印:

footest 
bartest 
cartest 

在此先感谢

+1

我相信,这个任务并不复杂,你可以自己先尝试一下,然后如果事情会出差错,把你所面临的困难。 –

回答

-1
s1 = 'footest_fall' 
s1_left = s1.partition('_')[0] 
print(s1_left) 
+1

问题是关于*聚合词的第一部分,这并没有回答。 –

0

这个怎么样?假设你知道如何阅读文件。

import itertools 

z = ['footest_footest', 
'footest_footest2', 
'footest_footest3', 
'footest_footest6', 
'bartest_bartest', 
'bartest_bartest2', 
'cartest_cartest', 
'cartest_cartest2', 
'cartest_cartest5'] 

for k, _ in itertools.groupby(z, key= lambda x: x.split('_',1)[0]): 
    print k 

footest 
bartest 
cartest 
0

我在示例中调用了文本文件foo。使用collections.Counter是有效的,并且还为您提供了出现次数。

from collections import Counter 
counter=Counter() 
with open('foo') as f: 
    for line in f: 
     counter[line.split('_')[0]]+=1 

counter含有独特的按键和出现次数

Counter({'footest': 4, 'cartest': 3, 'bartest': 2}) 

counter.keys()只返回键

['bartest', 'footest', 'cartest'] 
0

您可以使用列表理解来收集的前缀,并放置在一组只列出唯一的:

with open('file.txt') as f: 
    prefixes = set(line[0:line.find('_')] for line in f.readlines() 
             if line.find('_') != -1) 
    for p in prefixes: 
    print p 
0

与输出工作示例的要求:

import collections 

counter = collections.Counter() 
with open("file.txt", "r") as file: 
    content = file.read().splitlines() 
    for line in content: 
     counter[line.split("_")[0]] += 1 

for item in counter.keys(): 
    print(item)