Comment identifier dynamiquement des délimiteurs inconnus dans un fichier de données?

J'ai trois fichiers d'entrée. Chacun utilise un autre délimiteur pour les données qui y sont contenues. Les données d'un fichier ressemble à ceci:

pommes | bananes | oranges | raisins

fichier de données deux ressemble à ceci:

trimestre, dime, le nickel, le penny

fichier de données trois ressemble à ceci:

cheval, vache, cochon poulet chèvre

(le changement dans le nombre de colonnes est également intentionnelle)

La pensée que j'ai eu était de compter le nombre de caractères alpha, et suppose que le nombre le plus élevé était le caractère de séparation. Toutefois, les fichiers avec les non-espace séparateurs ont également des espaces avant et après les séparateurs, de sorte que les espaces de gagner sur tous les trois fichiers. Voici mon code:

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)

Il permet d'imprimer un dictionnaire avec les comtes de tous les caractères acceptables. Dans chaque cas, l'espace gagne toujours, donc je ne peux pas compter sur elle pour me dire ce que le séparateur est.

Mais je ne peux pas penser à une meilleure façon de le faire.

Des suggestions?

source d'informationauteur Greg Gauthier