Есть ли какая-то модель, которая отличает страны от городов? Или первая строка после пустой строки - это страна, а все последующие строки - названия городов до следующей пустой строки? В качестве альтернативы вы находите страны на основе справочной таблицы («словарь» в Python; ассоциативный массив в PHP; хеш в Perl - тот, который включает все официально признанные страны)?
Можно ли предположить, что нет городов, названия которых сталкиваются с какой-либо страной? Есть ли Франция, Айова, США или старая США, Япония?
Что вы хотите сделать с ними после того, как вы их разделили? Вы упомянули «некоторую обработку файлов, а затем извлечение их в другие файлы» - вы думаете о чем-то вроде одного файла на страну, содержащего список всех городов в нем? Или один каталог на страну и один файл на город?
Очевидный подход состоит в том, чтобы перебирать файл, построчно и поддерживать небольшой конечный автомат: пустой (начало файла, пустые строки между странами?), Во время которого вы переходите в состояние «страна» (всякий раз, когда вы находите любой шаблон, который соответствует любым критериям, означает, что вы встречали название страны). После того, как вы нашли название страны, вы находитесь в состоянии загрузки города. Я бы создал словарь, используя названия стран в качестве ключей и набор городов в качестве городов (хотя, возможно, вам действительно могут понадобиться графы / округа, кортежи названий городов в тех случаях, когда в стране есть несколько городов с одинаковым именем: Портленд, Мэн против Портленда, Орегон, например). Вы также можете иметь состояние «ошибка», если содержимое вашего файла приводит к некоторой двусмысленности (названия городов до того, как вы определили страну, два названия стран подряд и т. Д.).
Трудно предложить хороший фрагмент кода, учитывая, насколько расплывчаты ваши спецификации. вот.