Используйте регулярное выражение Python * , чтобы найти совпадения в строке, и collections.Counter
, чтобы упростить подсчет:
s='''
gulf energy 8"x3" drilling jar (6"5/8 reg box x pin) received 01/06/2019 ** schlumberger 6"1/2 drilling jar
** gulf energy 8"x3" drilling jar (6"5/8 reg box x pin) received 01/06/2019 ** schlumberger 6"1/2 drilling jar
** gulf energy 8"x3" drilling jar (6"5/8 reg box x pin) received 01/06/2019 ** schlumberger 6"1/2 drilling jar
'''
import re
import collections
# collections.Counter uses default keys with values of 0
count = collections.Counter()
# specify whatever regex you need
RE = re.compile(r'[0-9]+"([0-9]+/[0-9]+)?')
# for each match, add 1 to the counter
for f in RE.finditer(s):
dimension = f.string[slice(*f.span())]
count[dimension] += 1
print(count)
Выходы
Counter({'8"': 3, '3"': 3, '6"5/8': 3, '6"1/2': 3})
Если вы действительно хотите ограничить размеры, которые у вас есть в последнем дикте, отфильтруйте их позже:
keep_dimensions = set(('4"3/4', '6"', '6"1/2', '8"', '8"1/4'))
G_Energy = {k:count[k] for k in keep_dimensions}
дает
{'6"': 0, '6"1/2': 3, '4"3/4': 0, '8"1/4': 0, '8"': 3}