一个简单文本处理问题的多种解法
2012-10-11 00:00
302 查看
问题:
将如下形式文本
转换成如下形式
解法1:awk
解法2:sed
解法3:python
解法4 (paste)
将如下形式文本
Name: John Doe1 address : somewhere phone: 123-123-1234 Name: John Doe2 address : somewhere phone: 123-123-1233 Name: John Doe3 address : somewhere phone: 123-123-1232
转换成如下形式
Name: John Doe1 address : somewhere phone: 123-123-1234 Name: John Doe2 address : somewhere phone: 123-123-1233 Name: John Doe3 address : somewhere phone: 123-123-1232
解法1:awk
awk 'BEGIN { FS="\n"; RS=""; OFS="\t\t" } { print $1, $2, $3 }' file.txt
解法2:sed
cat input.txt | sed '/^$/d' | sed 'N; s:\n:\t\t:; N; s:\n:\t\t:'
cat input.txt | sed '/^$/d' | sed 'N; N; s:\n:\t\t:g'
解法3:python
#!/usr/bin/env python def parse(inputfile, outputfile): dictInfo = {'Name':None, 'address':None, 'phone':None} for line in inputfile: if line.startswith('Name'): dictInfo['Name'] = line.split(':')[1].strip() elif line.startswith('address'): dictInfo['address'] = line.split(':')[1].strip() elif line.startswith('phone'): dictInfo['phone'] = line.split(':')[1].strip() s = 'Name: '+dictInfo['Name']+'\t'+'address: '+dictInfo['address'] \ +'\t'+'phone: '+dictInfo['phone']+'\n' outputfile.write(s) if __name__ == '__main__': with open('output.txt', 'w') as outputfile: with open('infomation.txt') as inputfile: parse(inputfile, outputfile)
解法4 (paste)
chenqi@chenqi-OptiPlex-760:~/mypro/python/file-parsing$ paste -s -d'\t\t\t\n' infomation.txt Name: John Doe1 address : somewhere phone: 123-123-1234 Name: John Doe2 address : somewhere phone: 123-123-1233 Name: John Doe3 address : somewhere phone: 123-123-1232
相关文章推荐
- java对txt文本文件的复制粘贴(对文件内容进行了简单的修改)以行为一个处理单位
- 一个枚举问题的多种解法
- 在自己的WSASOCKET服务端/客户端中做了一个简单的解包程序处理粘包的问题
- grep查询文本:问一个简单shell问题,将grep的输出赋值给一个变量
- 一个简单的html测试tomcat本地服务器的问题处理一
- 一个问题的多种解法:
- C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,
- [Java]一个TCP文本上传相关的异常处理和偶然引出的中文编码问题
- 一个简单的html测试tomcat本地服务器的问题处理二
- 写了一个简单的处理类似xml文件的类,请大家指正【原创】
- 一个简单的用户信息处理理组件
- 处理一个傻子引发得问题
- 一个简单的 Java 自动批处理队列
- 简单的文本处理
- 运用TensorFlow处理简单的NLP问题
- 三维数组A和一个简单c问题
- [VB.NET]一个简单的问题!立刻给分!
- 又一个困扰我的简单问题。
- 一个复杂的poi处理 合并单元格及其样式对齐问题
- 简单问题:VIM中 查找 “上一个” 的快捷键是什么?