文章出處
文章列表
讀文件
pd.read_csv('path/to/file.txt',header=0,names='ab',index_col=0)
names Columns這個可以不寫,制定索引列是第一列,這樣就沒有序號
寫文件
dataframe.to_csv('d:/python/end.txt')
dataframe
類似于二維列表
充分利用map函數
df.a=df.a.map(function)
修改一列的值
篩選列
new_dataframe = df[df.a!='']
這種辦法可以篩選得到新的df
自動迭代
處理
def getPhoneNumFromFile(fobj):
regex = re.compile(r'1\d{10}', re.IGNORECASE)
phonenums = re.findall(regex, fobj)
#print phonenums
if len(phonenums)==1:
return phonenums[0]
else:
return ''
充分體現了輪子的重要性
如果是一個熟練人員幾分鐘就搞定了
#! /usr/bin/env python
# -*- coding:utf-8 -*-
# __author__ == "xpro"
import pandas as pd
import re,optparse,os
def getPhoneNumFromFile(fobj):
regex = re.compile(r'1\d{10}', re.IGNORECASE)
phonenums = re.findall(regex, fobj)
#print phonenums
if len(phonenums)==1:
return phonenums[0]
else:
return ''
def main():
p = optparse.OptionParser()
p.add_option('--source', '-s', default="d:/python/telpwd.txt", help=u'要處理的文件路徑') #應該對文件進行驗證判斷是否存在
p.add_option('--dist', '-d', default="d:/python/dis.txt", help=u'輸出文件路徑') #驗證目錄是否可以寫
#如果用戶使用的是默認的應該給出提示
options, arguments = p.parse_args()
df = pd.read_csv(options.source, header = 0)
df.a = df.a.map(getPhoneNumFromFile)
df = df[df.a != '']
print 'wirting ro text file...'
df.to_csv(options.dist)
if __name__ == '__main__':
main()
下面是不是用pandas自己寫的版本
#! /usr/bin/env python
# -*- coding:utf-8 -*-
# __author__ == "tyomcat"
import re,optparse,os,time
p = optparse.OptionParser()
p.add_option('--source', '-s', default="d:/python/telpwd.txt",help=u'要處理的文件路徑')
p.add_option('--dist', '-d', default="d:/python/dis.txt",help=u'輸出文件路徑')
options, arguments = p.parse_args()
print u'默認路徑: %s' % options.source
print u'默認輸出文件路徑: %s' % options.dist
raw_input()
#大家自己處理txt文本的時候,只要重寫這個函數就好了
def getPhoneNumFromFile(fobj):
regex = re.compile(r'1\d{10}', re.IGNORECASE)
phonenums = re.findall(regex, fobj)
#print phonenums
return phonenums
file = open(options.source)
output = []
start = time.clock()
start2 = time.time()
lines = 0
while 1:
line = file.readline()
lines += 1
if not line:
break
arr = line.strip().split('----')
rst = getPhoneNumFromFile(arr[0])
if rst:
temp = [rst[0]]
if len(arr) == 2:
temp.append(arr[1])
print 'line ',lines,len(output), temp, time.clock() - start
print line
output.append(temp)
# do something
rstfile = open(options.dist,'w')
for x in output:
#x[1] += '\n'
#print x[0] + '----' + x[1] + '\n'
if len(x) == 2:
rstfile.write(x[0] + '----' + x[1] + '\n')
# else:
# rstfile.write(x[0] + '----' + '\n')
print u'文件輸出到: '+options.dist
end2 = time.time()
end = time.clock()
print u'程序用時cpu:',end - start
print u'程序用時:',end2 - start2
raw_input()
效率差別那是極大的,這個要3個多小時,上面要十幾秒
文章列表
全站熱搜