【发布时间】:2011-04-26 12:18:01
【问题描述】:
我有三个输入数据文件。每个都对其中包含的数据使用不同的分隔符。数据文件一如下所示:
苹果 |香蕉| 高分辨率照片| CLIPARTO橘子| 高分辨率照片| CLIPARTO葡萄
数据文件二长这样:
25 美分硬币、1 美分硬币、1 美分硬币
数据文件三长这样:
马牛猪鸡山羊
(列数的变化也是有意的)
我的想法是计算非字母字符的数量,并假设最高计数是分隔符。但是,具有非空格分隔符的文件在分隔符之前和之后也有空格,因此空格在所有三个文件上都占优势。这是我的代码:
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)
它将打印一个包含所有可接受字符计数的字典。在每种情况下,空格总是获胜,所以我不能依靠它来告诉我分隔符是什么。
但我想不出更好的方法来做到这一点。
有什么建议吗?
【问题讨论】:
标签: python parsing csv text-files textinput