import os
import gzip
import pandas as pd
files = [f for f in os.listdir('.') if f.endswith('.csv.gz')]
for f in files:
with gzip.open(f, 'rb') as f_in:
with open(f[:-3], 'wb') as f_out:
f_out.write(f_in.read())
df = pd.read_csv(f[:-3])
file_name = f[:-7].split('_')
df.insert(0, 'FileName', f[:-3])
df.insert(1, 'RowNumber', range(1, len(df)+1))
df.insert(2, 'LastFour', file_name[3][-4:])
df.insert(len(df.columns), 'FirstEight', file_name[3][:8])
df.insert(len(df.columns), 'SecondPart', file_name[1])
df.to_csv(f[:-3], index=0, sep='|', encoding='utf-8',header=None)
运行完后发现原数据首尾各多出一个双引号
可以尝试一下下面的处理方式:
df = pd.read_csv(f[:-3], quotechar=' ')
import re
# 去掉首尾的双引号
df = df.applymap(lambda x: re.sub('^"|"$', '', x))
import csv
df.to_csv(f[:-3], index=0, sep='|', encoding='utf-8', header=None, quoting=csv.QUOTE_NONE)
双引号代表这是个字符串
比如“123”是个字符串
如果你想把它变成123这样的int型,做个类型转换啊
或許應該列出部分原數據(可以修改敏感內容)。
讓其他人有足夠的資料做測試。