【问题标题】:Defining Field names with special characters such as ^ in python dbf在 python dbf 中使用特殊字符定义字段名称,例如 ^
【发布时间】:2019-03-04 15:08:07
【问题描述】:

我想定义一个字段名称可能包含 ^ 字符的 DBF 表。 我正在使用下表定义:

tbl_SubDBF = dbf.Table("..//output//Ttest.dbf", \
                       'B^AWG C(50);    C^PTYPE C(200)')

我收到如下字段规范错误:

field names must start with a letter, and can only contain letters, digits, and _

是否有一种解决方法(转义字符)允许我在创建 dbf 表时定义上述标题?

我正在使用 python 3.7

【问题讨论】:

    标签: python dbf


    【解决方案1】:

    原答案

    据我所知,dbf 字段规范不允许字段名称中包含非字母数字字符。目前唯一可能的解决方法是继承 Table 并将失败的方法替换为允许奇怪字符的方法。


    更新答案

    查看有问题的方法 (add_fields),替换它将是一项重大努力。因此,从dbf 0.98.0 开始,您可以在字段名称中使用任何想要/需要的奇怪字符,但 dbf 会对此产生警告:

    <module>:<line_no>: FieldNameWarning: "p^type invalid:  field names should start with a letter, and only contain letters, digits, and _
    some_dbf.add_fields('p^type C(25)')
    

    要抑制该警告,可以添加:

    import warnings
    warnings.filterwarnings('ignore', '', dbf.FieldNameWarning)
    

    【讨论】:

    • 谢谢 Ethan,我不知道如何执行上述操作,我在想写一个函数并用 C^ 显式重命名字段名会起作用,也许我可以在那里遵循一些方向而不是进行类子类编码等(我没有在类中进行任何编程或修改)
    • 创建 DBF 表后,我可以在其程序中打开它并重命名列,这只是我希望避免的手动步骤。在创建表格和调整字段名称后,我正在为用户执行大量自动化任务,不希望他们暂停并手动调整表格字段
    • @MakJ:你能用C_代替C^吗?您是否使用 Python 和 dbf 之外的任何其他程序来处理这些文件?如果是这样,他们可以使用包含^ 的字段名称吗?
    • 是的,这确实是限制,标题字段需要有 C^Cbl 名称。然后读取该表的程序将 C^ 识别为指向内置目录,而不是将其视为文本。没有其他选择,必须使用 DBF 不允许的 C^ 导出一些标头字段。那么......还有其他想法吗?
    • @MakJ:更新了答案。短版:获取最新版dbf。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    相关资源
    最近更新 更多