3つの入力データファイルがあります。それぞれが、そこに含まれるデータに対して異なる区切り文字を使用します。データファイル1は次のようになります。
りんご| バナナ| オレンジ| ブドウ
データファイル2は次のようになります。
クォーター、ダイム、ニッケル、ペニー
データファイル3は次のようになります。
馬牛豚鶏山羊
(列数の変更も意図的なものです)
私が考えたのは、非英字の数を数えることであり、最も多い数は区切り文字であると推測しました。ただし、スペース以外の区切り文字が含まれるファイルには、区切り文字の前後にもスペースがあるため、3つのファイルすべてでスペースが優先されます。これが私のコードです:
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)
受け入れ可能なすべての文字の数を含む辞書を印刷します。いずれの場合も、スペースが常に勝つため、セパレーターが何であるかを教えてくれることに頼ることはできません。
しかし、私はこれを行うためのより良い方法を考えることはできません。
助言がありますか?