Как конденсироваться, т.е. устранить избыточность из следующих данных:устранить избыточность из файла с помощью Python
code: GB-ENG, jobs: 2673
code: GB-ENG, jobs: 23
code: GB-ENG, jobs: 459
code: GB-ENG, jobs: 346
code: RO-B, jobs: 9
code: DE-NW, jobs: 4
code: DE-BW, jobs: 3
code: DE-BY, jobs: 9
code: DE-HH, jobs: 34
code: DE-BY, jobs: 11
code: BE-BRU, jobs: 27
code: GB-ENG, jobs: 20
Вывод должен быть таким образом:
GB-ENG, 3521
RO-B, 9
DE-NW, 4
DE-BW, 3
DE-HH, 34
DE-BY, 20
BE-BRU, 27
Описан 1 каноническим представлением от каждого кода, то есть DE-BY
, который будет представлять суммарную совокупность по числам, которые связаны с каждым экземпляром этого кода, например:
code: DE-BY, jobs: 11
code: DE-BY, jobs: 9
становится
DE-BY, 20
на данный момент я создаю этот вход с помощью этого скрипта Python:
import json
import requests
from collections import defaultdict
from pprint import pprint
def hasNumbers(inputString):
return any(char.isdigit() for char in inputString)
# open up the output of 'data-processing.py'
with open('job-numbers-by-location.txt') as data_file:
# print the output to a file
with open('phase_ii_output.txt', 'w') as output_file_:
for line in data_file:
identifier, name, coords, number_of_jobs = line.split("|")
coords = coords[1:-1]
lat, lng = coords.split(",")
# print("lat: " + lat, "lng: " + lng)
response = requests.get("http://api.geonames.org/countrySubdivisionJSON?lat="+lat+"&lng="+lng+"&username=s.matthew.english").json()
codes = response.get('codes', [])
for code in codes:
if code.get('type') == 'ISO3166-2':
country_code = '{}-{}'.format(response.get('countryCode', 'UNKNOWN'), code.get('code', 'UNKNOWN'))
if not hasNumbers(country_code):
# print("code: " + country_code + ", jobs: " + number_of_jobs)
output_file_.write("code: " + country_code + ", jobs: " + number_of_jobs)
output_file_.close()
это, вероятно, будет наиболее эффективным, чтобы включить эту функцию в рамках этого сценария, но я пока не удалось выяснить, как это сделать.
Вы можете попробовать использовать питона счетчик где ключ код и значение является числом рабочих мест. – Steve
вместо того, чтобы писать в файл, который вы имеете в виду? как это будет выглядеть? –
Возможно, вы легко справитесь с использованием только стандартных инструментов UNIX и командной строки. – Tobias