使用Python gspread写入谷歌表格时如何去除不可见单引号
问题原因
谷歌表格第一列值前出现不可见单引号,是gspread默认写入规则导致的:wks.update()方法默认使用RAW模式写入数据,该模式下所有传入的字符串类型值,会被谷歌表格标记为强制纯文本,自动添加不可见的前导单引号,效果和手动在单元格输入内容前先敲一个单引号强制设为文本格式完全一致,因此事后调整单元格数字格式无法消除这个标记。
修复方法
调用update方法时,显式传入value_input_option='user_entered'参数即可。该模式会模拟真实用户手动输入单元格内容的逻辑,不会额外添加纯文本标记用的前导单引号,同时会自动适配内容的正常展示格式。
你只需要修改原有代码中的update调用行,其余逻辑保持不变:
import gspread import pandas as pd data=[['1, 2', 'hello', 4], ['3, 4', 'there', 3]] cols = ['problem', 'words', 'ints'] df = pd.DataFrame(data=data, columns=cols) df_as_lists = df.values.tolist() svc_acct = gspread.service_account_from_dict(info=gs_key) sheet = svc_acct.open_by_url('https://docs.google.com/spreadsheets/d/1cW1ry2FwlEOGSF270skXLN52UeqWkhgFXfeDVqH_a3M/edit#gid=0') wks = sheet.worksheet('Sheet1') # 仅修改这一行,添加value_input_option参数 wks.update('A1:C3', df_as_lists, value_input_option='user_entered')
补充说明:如果后续写入内容包含以
=开头的字符串,user_entered模式会将其识别为公式,这类特殊内容可单独做转义处理,你当前场景下无此类内容,可直接使用该配置。
修改后写入的表格效果和预期完全一致,第一列内容将直接显示为1, 2、3, 4,不存在前置不可见单引号。
内容的提问来源于stack exchange,提问作者ah2Bwise
相关产品推荐
相关产品推荐

