最终程序
products = []
while True:
name = input('请输入商品名称:')
if name == 'q':
break
price = input('请输入商品价格:')
price = int(price)
products.append([name, price])
print(products)
for p in products:
print(p[0], '的价格是', p[1])
with open('products.csv', 'w', encoding='utf-8') as f:
f.write('商品,价格\n')
for p in products:
f.write(p[0] + ',' + str(p[1]) + '\n')
加入程序来写栏位
第二个提点是 刚刚档案存成products.csv
那他的好处是可以用excel打开 而且他是一个很共用的格式 各种作业系统都可以读取
我们会想要在我们的档案内容裡面 加一行注解或是栏位的名称
譬如说这边我是不是会想要写成商品 然后这边写价格
要怎么样在程式码裡面增加这个第一行要怎么做到呢
其实非常非常的简单
我们原本这边有一个for loop for迴圈来迴圈我们的商品对不对
每一个商品我们就写一行 我们就f write一次 我们就写入一次
那在写商品之前 我们是不是想要先写栏位 那我就在for loop的前面
f.write('商品,价格\n')
⚠️商品和价格之间的逗号是英文逗号!!
分行 记得要有这个换行的符号
就这样 我只加了一行程式码在for loop的前面
先写栏位名称之后 我才开始用for loop来 一个一个商品各写一行
执行
你有没有看到我们的栏位这边现在变问号 显示不出来 中文字
应该是要显示出商品跟价格
他有两格没错 可是怎么会是乱码
如果我把这个products.csv档 我用sublinee打开 还是乱码
解决乱码问题
我们现在写入这个中文的时候为什么会存成乱码
这表示说我们在写入这个中文栏位的时候 他的语言上面编码出了问题
编码(encoding)这个词是比较深的东西 他有蛮多文件跟教学的 那我们不能讲得太深 不然大家会乱掉
简单讲 写入档案跟读取档案的时候 都会牵扯到语言的编码
我们这边在打开这个档案的时候 我们要告诉他 明确的告诉他说 我要使用UTF-8
UTF-8这个编码 这是一个最有名的编码 几乎是世界语言全通的 也就是说他可以用来读各种符号跟语言 他又可以用来写各种符号
with open('products.csv', 'w', encoding='utf-8') as f:
⚠️我没写这个的时候也没有出现乱码问题
当我在打开这个products.csv的时候呢
W 写入模式
我明确的跟他讲说 我要使用UTF-8这个编码 才可以正确的写入我这个中文字
你记得这边有逗点(w和encoding之间)
对这个open来讲 我们一共给了三个东西
第一个是档名
第二个是写入模式
第三个是encoding等于UTF-8
encoding就是编码的意思 你只要知道说UTF-8是最广泛使用的编码 然后我们通常都建议直接使用UTF-8这个编码就可以了
再执行
他怎么还是问号
虽然还是问号 不过我用subline把他打开给你看 这次他是显示正确的商品跟价格 subline可以正确显示这个档案
为什么excel不行
编码在写入的时候有编码的问题 读取也有编码的问题 这表示说excel他现在并没有用UTF-8来读我们的档案
如果excel他是用UTF-8的编码来读取我们的档案的话 就不会变乱码了
如何用excel正确使用utf-8编码导入csv档
有一个方法解决这问题
选中A1格(随便选的)
菜单栏选择“数据——获取外部数据——自文本”data这边
然后读取资料夹products中的csv数据档
这边就可以选编码了
你看这些就是世界各种编码 看到一大堆
我就要选这个UTF-8 才可以正确读取
下一步 这个部分蛮重要的
delimiter就是分隔符号
他这个excel是不是有一格一格的
那我们目前这个档案 我们是不是告诉他说 你每次要分隔就是遇到逗点 你就换到下一格
所以我们的分隔符号 简单来说就是逗点
最广泛使用就是逗点
那我把这个tab取消打勾 我选comma comma就是逗点
我不是用空白键space
我也不是用分号semicolon 分号
我也不是用tab
我们现在是用comma
下一步
好 这个部分不用调整 finish
然后他问说 你要把这个资料输入到哪裡呢
我们就不用改 到A1
成功导进来了我们的数据
简单複习
因为excel打开我们的数据档的时候 products.csv的时候他并没有用UTF-8这种编码来读取 导致他的中文字会变乱码
那解决这种方法最简单的方式就是 你必须到data这边 自己去选 说我要从档案来导入数据 From text从档案来导入数据 之后你就可以自己选编码了 像我们刚刚有选UTF-8
这种编码上面的问题 其实在科技领域 软体界真的是一个蛮头痛的问题
就是大家都很常会遇到这种 因为编码不对 然后就档案显示不出来 有的格式错掉什么 包括政府的资料等等 都太常遇到这种问题了 一堆人都遇到这种编码上面的问题
那UTF-8就是最有名的编码 就只要全部人都用UTF-8就没事了
上传到GitHub
好 那我现在加了这个栏位名称之后 我一样就上传到GitHub
Git add products.py
然后版本名称-m Add header
header的意思就是栏位名称
origin master