Python将CSV数据写入Google Sheet时自动添加单引号问题求助
解决Google Sheet写入自动添加单引号的问题
问题根源是csv.reader读取的所有数据都是字符串类型,Google Sheets API默认会对这类看起来像数值/日期的字符串添加单引号,强制按字符串存储。要解决这个问题,需要恢复数据的原始类型,并配合API参数让Sheet自动识别类型。
解决方案步骤
1. 转换CSV数据的类型
读取CSV时,将数值型字段转为整数/浮点数,日期字段转为可识别的格式,让Google Sheets能正确判断数据类型:
import csv from datetime import datetime def convert_value(value): # 尝试转换为整数 try: return int(value) except ValueError: pass # 尝试转换为浮点数 try: return float(value) except ValueError: pass # 尝试转换为日期时间(根据你的CSV日期格式调整) try: return datetime.strptime(value, '%m/%d/%Y %H:%M') except ValueError: # 无法转换则保留原字符串 return value with open(csv_file_path, 'r') as csv_file: csv_reader = csv.reader(csv_file) next(csv_reader) # 跳过表头行 # 逐行转换每个单元格的类型 data = [[convert_value(cell) for cell in row] for row in csv_reader]
2. 设置正确的写入参数
调用append_rows时,指定value_input_option='USER_ENTERED',该参数会让Google Sheets像用户手动输入一样自动识别数据类型,不会额外添加单引号:
# 写入Google Sheet worksheet.append_rows(data, value_input_option='USER_ENTERED')
补充说明
USER_ENTERED模式下,Sheet会自动解析数值、日期、公式等类型,完全模拟手动输入的效果;- 如果不需要Sheet自动识别类型(比如要保留特殊格式的文本),可以改用
value_input_option='RAW',但前提是你已处理好对应的数据类型; - 日期格式需和CSV中的实际格式匹配,上述代码使用的是
%m/%d/%Y %H:%M,若你的日期格式不同,需修改strptime的格式字符串。
内容的提问来源于stack exchange,提问作者SQLLER
相关产品推荐
相关产品推荐

