python2写入文件关于中文乱码和格式情况【手记二】

版本声明:Python2.7

原代码:

    date = raw_input("请输入销售日期:" )
    ID = raw_input("请输入销售员编号:" )
    name = raw_input("请输入商品名称:" )
    number = raw_input("请输入商品数量:" )
    price = raw_input("请输入商品单价:" )
    sum = int(number)*int(price)
    s =(date+ID+name+number+price+sum)

经过不断修改,前后出现报错:

1、TypeError: cannot concatenate 'str' and 'int' objects

2、TypeError: can only concatenate tuple (not "str") to tuple (python)

3、不报错,但是写出的中文是乱码

针对第一第二个问题,我查了查,反复尝试了“+”和“,”去调整,也尝试了str(变量名)、int(变量名)。

前者还是会出现报错,后者则会出现,像“001”这样的数据,要么变成“1”,要么变成“ab001”的情况。

针对第三个问题,像是在输入中文的地方前面加u等等,试了几种,还是不太行。

最后到的一个解决办法如下:

修改后的代码:

    date = raw_input("请输入日期:" )
    ID = raw_input("请输入编号:" )
    x = raw_input("请输入名称:" )
    g = x.decode('utf-8')
    name = g.encode('gbk')

    number = raw_input("请输入数量:" )
    price = raw_input("请输入单价:" )
    sum = int(number)*int(price)
    s ="%0s%13s%13s%13s%13s%13s" % (date, ID,name,number,price,sum)

运行成功,能够顺利写入文件,且中文输出有效。

后来想要读取文件中符合条件的行,根据关键词按行搜索和提取,在打印提取结果时,再次遇到了中文乱码问题。

最后的解决方式是:

f = open("D:\\test.txt","r")
lines = f.readlines()
print("日期 名称 数量 价格 共计")
for lines in lines:
    if "001" in lines:
        print(lines.decode("gbk"))

 

Reference:
版权声明:本文为CSDN博主「joyfixing」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/joyfixing/article/details/79971667

你可能感兴趣的:(小白手记)