1、CSV文件
2、代码实现
2.1 pandas和csv方法读写
import pandas as pd
import csv
import os.path
# 代码背景:word_list 内元素是key,species_code_list 内元素是value,需要保存csv格式文件
word_list = pd.Series(
['main', 'int', 'char', 'if', 'else', 'for', 'while', 'return', 'void', 'STRING', 'ID', 'INT', '=', '+',
'-', '*', '/', '(', ')', '[', ']', '{', '}', ',', ':', ';', '>', '<', '>=', '<=', '==', '!='])
species_code_list = pd.Series(
[1, 2, 3, 4, 5, 6, 7, 8, 9, 50, 10, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 29, 40])
system_table = dict(zip(word_list, species_code_list))
labels = ['单词符号', '种别码']
def writeToCSVBYPandas(fileName) -> '保存字典类型到csv格式文件':
df = pd.concat([word_list, species_code_list], axis=1)
# 或 df = pd.DataFrame(list(system_table.items()))
# DataFrame存储为csv格式文件,index表示是否显示行名,默认是
df.to_csv(fileName, header=labels, sep=',', index=False, encoding="utf_8_sig")
def readFromCSVByPandas(fileName) -> '返回字典类型':
df = pd.read_csv(fileName, sep=',', encoding="utf_8_sig")
dict_tmp = dict(zip(df.values[:, 0], df.values[:, 1]))
for item in dict_tmp.items():
print(item)
return dict_tmp
def writeToCSVByCsv(fileName) -> '保存字典类型到csv格式文件':
df = pd.concat([word_list, species_code_list], axis=1)
out = open(fileName, 'w', newline='', encoding="utf_8_sig")
# 设定写入模式
writer = csv.DictWriter(out, fieldnames=tuple(labels))
writer.writeheader()
for row in range(df.shape[0]):
dict_tmp = {labels[0]: df.values[row, 0], labels[1]: df.values[row, 1]}
writer.writerow(dict_tmp)
out.close()
def readFromCSVByCsv(fileName) -> '返回字典类型':
dict1 = {}
if not os.path.isfile(fileName):
print("File does not exist!")
return dict1
try:
file = open(fileName, encoding="utf_8_sig")
reader = csv.DictReader(file, fieldnames=tuple(labels))
i = 1
for dict_tmp in reader:
if i == 1: # 除去顶部
i = 0
continue
list_tmp = list(dict_tmp.values())
dict1[list_tmp[0]] = list_tmp[1]
file.close()
for item in dict1.items():
print(item)
except Exception as e:
print(str(e))
finally:
return dict1
if __name__ == '__main__':
fileName = r'./2.csv'
readFromCSVByPandas(fileName)
readFromCSVByCsv(fileName)
2、直接读写
import pandas as pd
# 代码背景:word_list 内元素是key,species_code_list 内元素是value,需要保存csv格式文件
word_list = pd.Series(
['main', 'int', 'char', 'if', 'else', 'for', 'while', 'return', 'void', 'STRING', 'ID', 'INT', '=', '+',
'-', '*', '/', '(', ')', '[', ']', '{', '}', ',', ':', ';', '>', '<', '>=', '<=', '==', '!='])
species_code_list = pd.Series(
[1, 2, 3, 4, 5, 6, 7, 8, 9, 50, 10, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 29, 40])
system_table = dict(zip(word_list, species_code_list))
def readFromCsv(fileName):
fo = open(fileName)
ls = []
for line in fo:
line = line.replace('\n', '')
ls.append(line.split(','))
fo.close()
return ls
def writeToCsv(fileName, lst, fieldnames=None):
f = open(fileName, 'w')
if fieldnames is not None:
item = [str(i) for i in fieldnames]
f.write(','.join(item)+"\n")
for item in lst.copy():
item = [str(i) for i in item]
f.write(','.join(item)+"\n")
f.close()
def main():
fileName = r'./2.csv'
lst = [list(item) for item in system_table.items()]
labels = ['单词符号', '种别码']
writeToCsv(fileName, lst, labels)
ls = readFromCsv(fileName)
for item in ls:
print(item)
if __name__ == '__main__':
main()