python3 常见问题以及解决办法

1.使用python3的csv模块写入文件时多一个空行

这个问题主要出现在open函数中,应该为如下:

fp = open(output, "w", encoding="utf-8", newline="")
writer = csv.writer(fp)

2.解析类似于“05::02:01,12”这样的时间

上面的字符串可以自己根据文本进行解析,也可以使用time模块的函数进行解析

def parse_time(t):
    """
    解析时间,并把时间转换为秒数
    :param t:
    :return:
    """
    index = t.find(",")
    # 获取前缀和后缀
    prefix = t[:index]
    postfix = t[index + 1:]
    # 将前缀转化为秒
    seconds = 0.0
    tm = time.strptime(prefix, "%H:%M:%S")
    seconds += tm.tm_hour * 3600 + tm.tm_min * 60 + tm.tm_sec
    seconds += int(postfix) / 1000.0
    
    return seconds

个人猜测逗号后面的为毫秒,所以在转换成秒的时候需要除去1000,

3.解析xlsx文件

这里使用的是openpyxl


    import openpyxl
    wb = openpyxl.load_workbook(filename)
    sheet_names = wb.sheetnames
    print(sheet_names)
    work_sheet = wb[sheet_names[0]]

    first = True
    # 获取长度和高度
    for row in work_sheet.rows:
        # 去掉第一行
        if first:
            first = False
            continue
        # 获取第一列和第二列
        name = row[0].value
        url = row[1].value
        if name is None:
            continue
        print(name, url)

4.python3读取json的方法

python对json的格式支持的还是比较好的,而且在python中需要把json转换成python的dict或者list再使用。

①.str=>dict json字符串转换成dict

 {
      "category": 1,
      "url": "http://tv.cctv.com/2018/12/04/VIDEgCf74WCBmdYQ9iuAEf52181204.shtml",
      "video_id": "G_00600",
      "start time": "0:9:22,21",
      "end time": "0:9:34,1",
      "split": "train",
      "id": 600
}

如上面的字符串,可以直接通过以下代码转换:

json_data = json.loads(text)

②.file=>dict

fp = open("1.json", "r", encoding="utf-8")
json_data = json.load(fp)
fp.close()

 

你可能感兴趣的:(python)