python 字符串 去除 特定位置字符——简记

参考链接
Python文件读写、StringIO和BytesIO 概念参考

数据格式为:

20180616_231315_A003081_B003080_A  1 0.000 1.840 speaker NA unknown 
20180616_231315_A003081_B003080_B  1 0.000 1.840 speaker NA unknown 

转换为:

20180616_231315_A003081_B003080  1 0.000 1.840 speaker NA unknown 
20180616_231315_A003081_B003080  1 0.000 1.840 speaker NA unknown 

代码如下:

# ester1.tst.mdtm 把第一个 show 字段  去掉 _A _B 转化为  test.tst.mdtm

# show 代表音频名字
f = open("ester.tst.mdtm","r")

fo = open("test.tst.mdtm", "w")
while True:
    line = f.readline()
    if not line:
        break
    else:
        try:
            #print(line)
 
            #print(type(line))
            
            temp = line[:31] + line[33:]
        
            fo.write(temp)
        except:
            print("=====")
            print(str(line))
            print("=====")
            
fo.close()  

文件读写相关知识:
‘r’:读

‘w’:写

‘a’:追加

‘r+’ == r+w(可读可写,文件若不存在就报错(IOError))

‘w+’ == w+r(可读可写,文件若不存在就创建)

‘a+’ ==a+r(可追加可写,文件若不存在就创建)

对应的,如果是二进制文件,就都加一个b就好啦:

‘rb’  ‘wb’  ‘ab’  ‘rb+’  ‘wb+’  ‘ab+’

个人简记:

踩的坑:
“”"
自己把 mdtm文件 ,一行读出, decode解码为 string 去掉 _A _B 后,再 encode编码为 字节 ,写入 mdtm
报错如下:
ValueError: not enough values to unpack (expected 8, got 0)
“”"
总结如下:

二进制方式 读写文件 ,但是二进制字节 转 字符串 ,去字符,再转 字节写入文件

这种方法,数据看上去没有问题,但是 我的程序是运行报错的 ,所以 要么读写都用 二进制 读写, 要么都用 字符串 读写

你可能感兴趣的:(python)