-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfile_tools.py
129 lines (109 loc) · 3.78 KB
/
file_tools.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# -*- coding:utf-8 -*-
'''
本模块提供与文件读写相关的操作
'''
import re
import os
import sys
import csv
import codecs
import xlrd
try:
import cPickle as pickle
except:
import pickle
def read_xlsx(filepath, sheet=0):
'''
本函数用于将excel文件以多级列表形式读取
还没测试是否可用
[filepath](str): 文件目录(含文件名)
'''
data = xlrd.open_workbook(filepath)
table = data.sheets()[sheet]
content = list(table.row_values)
if data:
data.release_resources()
del data
return content
def read_txt_as_csv(filepath, divider=','):
'''
本函数用于将以其他符号作为分隔符的文件读取为多级列表的形式
[filepath](str): 文件目录(含文件名)
[divider](str): 分隔符(缺省为英文逗号)
'''
file = open(filepath,'r', encoding='utf-8')
content = file.readlines()
result = [line.strip().split(divider) for line in content]
if file:
file.close
return result
def html_killer(input_string):
'''
本函数返回输入字符串去除了所有html标签及特殊符号(如 )后的剩余部分
[input_string](str): 待处理字符串
'''
result_string = re.sub(r'<[^<>]*>|&[^&;]*;','',input_string).strip()
return result_string
def simbol_killer(input_string):
'''
本函数返回输入字符串去除了各种语言字符后的剩余部分
[input_string](str): 待处理字符串
'''
new_string = re.sub(r'[\_\=\+\(\)》《\?\?\\\/【】\!!@#¥%…&()/,、。+~\!\n\t \,\'\"“”‘’]|\^[^\^;]*;',' ',input_string).strip()
new_string = re.sub(r' +',' ',new_string)
return new_string
def num_killer(input_string):
'''
本函数返回输入字符串去除了所有数字后的剩余部分
[input_string](str): 待处理字符串
'''
new_string = re.sub(r'[0-9]*',' ',input_string).strip()
new_string = re.sub(r' +',' ',new_string)
return new_string
def load_data(dump_path='', dump_filename=''):
'''
本函数通过提供文件路径直接读取通过pickle储存的文件
[dump_path](str): dump所得文件的目录
[dump_filename](str): dump所得文件的文件名
'''
dump_filepath = dump_path+dump_filename
with open(dump_filepath, 'rb') as dump_file:
data = pickle.load(dump_file)
return data
def dump_data(data, dump_path='', dump_filename=''):
dump_filepath = dump_path+dump_filename
with open(dump_filepath, 'wb') as dump_file:
data = pickle.dump(data, dump_file)
def unix2dos(r_filename, w_filename):
'''
本函数将unix格式文件(输入)转换为dos文件格式(输出)
[r_filename](str): 输入文件路径
[w_filename](str): 输出文件路径
'''
with open(r_filename, 'r') as f:
data = f.read()
data_new = data.replace('\n', '\r\n')
with open(w_filename, 'w') as f1:
f1.write(data_new)
def dos2unix(r_filename, w_filename):
'''
本函数将dos格式文件(输入)转换为unix文件格式(输出)
[r_filename](str): 输入文件路径
[w_filename](str): 输出文件路径
'''
with open(r_filename, 'r') as f:
data = f.read()
data_new = data.replace('\r\n', '\n')
with open(w_filename, 'w') as f1:
f1.write(data_new)
def number_check(input_string):
'''
本函数用于检测输入字符串中是否包含小数或是整数
[input_string](str): 待处理字符串
'''
number_type = None
if re.search(r'[0-9]+\.[0-9]+', input_string):
number_type = 'float'
elif re.search(r'[0-9]+', input_string):
number_type = 'int'
return number_type