Shell 脚本非常适合简洁的文件系统操作以及通过管道将过滤器和命令行工具中现有功能的组合编写脚本。
当您的需求更大时——无论是在功能、健壮性、性能、效率等方面——然后您可以转向功能更全面的语言,我认为 Python、Perl 和 Ruby 都是很棒的语言。不仅因为动态类型和不需要编译,还因为像pandas、Fabric、Capistrano、Puppet 和许多其他工具,它们让生活变得更轻松,一般——目的编程语言。它们具有丰富多样的语句类型、众多内置数据结构,并且没有内置的假设或捷径可言。
使用 python,您可以将 .txt 或 .csv 文件导入到 DataFrame 中,这样操作起来更快更容易
import pandas as pd
df = pd.read_csv('/PathToFile.txt', sep = ',')
注释:
默认情况下,read_csv 使用 C 解析器引擎来提高性能。 C
parser 只能处理单个字符的分隔符。如果您的 CSV 有
多字符分隔符,您需要将代码修改为
使用“python”引擎。也可以传递正则表达式:pd.read_csv(..., sep=r'\s*\|\s*', engine='python')
UnicodeDecodeError 发生在数据以一种编码存储时
格式,但以不同的、不兼容的格式读取。最常见的
编码方案是“utf-8”和“latin-1”,您的数据很可能
适合其中之一。
header=False 指定 CSV 中的第一行是数据行
而不是标题行,并且 names=[...] 允许您指定
分配给 DataFrame 时的列名列表
已创建。
使用 Python 的内置 csv 模块替代 pandas 库:
import csv
from pprint import pprint
with open('foo.csv', 'rb') as f:
reader = csv.reader(f)
headers = reader.next()
column = {h:[] for h in headers}
for row in reader:
for h, v in zip(headers, row):
column[h].append(v)
pprint(column) # Pretty printer
您可以使用的另一种解决方案csv.DictReader:
reader = csv.DictReader(open('foo.csv'))
dictobj = next(reader)
但我建议您使用pandas,对于一个小的、有针对性的目的,dict 可能会更快。如果这就是你所需要的,那么一定要使用字典!但是,如果您需要 DataFrame 的强大功能和奢华,那么 dict 是无可替代的。如果数据结构不能首先满足你的需求,那么比较速度是没有意义的。