0

我正在编写一个程序来根据来自谷歌电子表格的数据为一个家庭创建一个目录条目。其中一个功能是列出家庭中的所有孩子以及他们的生日。但是,该程序在生日之前无缘无故地打印一个撇号,例如'01/01/01,我不知道为什么。我已将生日的数据转换为字符串,而我的其他字符串没有这样做。为什么会这样?

以下是源代码的相关部分:

    import gspread
    gc =gspread.login('mylogin','password')
    spreadsheet = gc.open_by_key("mykey")
    worksheet = spreadsheet.get_worksheet(0)
    Child1=(worksheet.cell(x,13)).value
    Child1BD=(worksheet.cell(x,14)).value
    Child2=(worksheet.cell(x,15)).value
    Child2BD=(worksheet.cell(x,16)).value
    Child3=(worksheet.cell(x,17)).value
    Child3BD=(worksheet.cell(x,18)).value
    Child4=(worksheet.cell(x,19)).value
    Child4BD=(worksheet.cell(x,20)).value
    # If there are no children, return without doing anything.
    if Child1 == "n/a":
        return;
    # If there is one child only, print the child's name and birthday.
    elif Child2 == "n/a" and Child1 != "n/a":
        print str(Child1)+"- "+str(Child1BD)
        return;
    # If thre are exactly two children, print their names and birthdays.
    elif Child3 == "n/a" and Child2 != "n/a":
        print str(Child1)+"- "+str(Child1BD)
        print str(Child2) +"- "+str(Child2BD)
        return;
    # If there are exactly three children, print their names and birthdays.
    elif Child4 == "n/a" and Child3 != "n/a":
        print str(Child1)+"- "+str(Child1BD)
        print str(Child2) +"- "+str(Child2BD)
        print str(Child3) +"- "+str(Child3BD)
        return;
    # If there are four children, print their names and birthdays.
    elif Child4 != "n/a":
        print str(Child1)+"- "+str(Child1BD)
        print str(Child2) +"- "+str(Child2BD)
        print str(Child3) +"- "+str(Child3BD)
        print str(Child4) +"- "+str(Child4BD)
        return;
4

2 回答 2

4

这就是 Excel 在内部存储字符串的方式。您必须在打印之前将其删除。

撇号表示它是字符串而不是数字。

于 2013-03-07T03:35:40.590 回答
1

'用于 excel 以防止它尝试猜测单元格的格式。例如,如果您想防止单元格自动转换为日期,您可以'01/01/2013

如果您不知道字符串的来源,最好在前面加上 a'以防止这种神奇的(可能令人困惑的)重新格式化

正如 Mark 所说,在 Google 电子表格中保持兼容可能是相同的

一般来说,剥离'掉以获取显示的字符串应该是安全的,只是要小心将未转义的字符串放回电子表格中

于 2013-03-07T03:48:11.517 回答