一个简单文本处理问题的多种解法
生活随笔
收集整理的這篇文章主要介紹了
一个简单文本处理问题的多种解法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
問題:
將如下形式文本
Name: John Doe1 address : somewhere phone: 123-123-1234Name: John Doe2 address : somewhere phone: 123-123-1233Name: 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 pythondef 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
?
?
轉載于:https://my.oschina.net/u/158589/blog/82515
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的一个简单文本处理问题的多种解法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 互联网资讯简报2019-05-14
- 下一篇: CentOS配置本地YUM源