我有像这样的CSV文件
dsdgh|234|@jhsjdh||jdhjdhfu|123|
#45ghf|123|laiej|||b8#hfj|
|hyrhyf|123||fhyr|@#$%|
等等。
列数可以等于100.此外,上面的文件是管道分隔的。
我想检查每列的数据类型,即列是数字还是字母或字母数字
并希望将结果重定向到txt文件
请帮助我,实现这个目标
谢谢
答案 0 :(得分:0)
假设在每一行中列数相同,您可以使用此脚本:
import re
import sys
input_file = open(sys.argv[1])
cols = None
for line in input_file.readlines():
fields = line.split('|')
if not cols:
cols = map(lambda _: 'empty', fields)
for i, field in enumerate(fields):
if field == '':
continue
if re.match(r'^[0-9]+$', field):
if cols[i] == 'empty':
cols[i] = 'numeric'
elif cols[i] == 'alphabetic':
cols[i] = 'alphanumeric'
elif re.match(r'^[^0-9]+$', field):
if cols[i] == 'empty':
cols[i] = 'alphabetic'
if cols[i] == 'numeric':
cols[i] = 'alphanumeric'
else:
cols[i] = 'alphanumeric'
print '|'.join(cols)
只需将其保存到文件(在此示例中为script.py
),然后运行:
$ python script.py <path_to_file_with_columns>