Как вы динамически определяете неизвестные разделители в файле данных?

У меня есть три файла входных данных. Каждый использует разные разделители для данных, содержащихся в них. Первый файл данных выглядит так:

apples | bananas | oranges | grapes

файл данных два выглядит так:

quarter, dime, nickel, penny

файл данных третий выглядит так:

horse cow pig chicken goat

(изменение количества столбцов также является преднамеренным)

У меня была мысль для подсчета количества не-альфа-символов и предположения, что наибольшее количество было разделителем. Однако файлы с разделителями без пробелов также имеют пробелы до и после разделителей, поэтому пробелы имеют преимущество во всех трех файлах. Вот мой код:

def count_chars(s):
    valid_seps=[' ','|',',',';','\t']
    cnt = {}
    for c in s:
        if c in valid_seps: cnt[c] = cnt.get(c,0) + 1
    return cnt

infile = 'pipe.txt' #or 'comma.txt' or 'space.txt'
records = open(infile,'r').read()
print count_chars(records)

Он напечатает словарь с подсчетом всех допустимых символов. В любом случае место всегда выигрывает, так что я могу ' Я полагаюсь на это, чтобы сказать мне, что такое разделитель.

Но я не могу придумать лучшего способа сделать это.

Есть предложения?

14
задан Greg Gauthier 17 October 2010 в 05:19
поделиться