TSV (.tsv)
背景

-
- MIME 类型:text/tab-separated-values
- TSV 表格数据格式.
- 按行存储数值和文本信息,使用制表符分隔字段.
- TSV 是 Tab-Separated Values 的缩写.
- 纯文本格式.
- 类似于 CSV.
Import 与 Export

- Import["file.tsv"] 返回字符串和数字的二维数组,表示存储在文件中的行列.
- Import["file.tsv",elem] 从一个 TSV 文件中导入指定的参数.
- Import["file.tsv",{elem,sub1,…}] 导入子参数,特别是有助于导入部分数据的参数.
- 导入格式可以用 Import["file","TSV"] 或 Import["file",{"TSV",elem,…}] 指定.
- Export["file.tsv",expr] 从 expr 创建 TSV 文件.
- 支持的 expr 表达式包括:
-
{v1,v2,…} 单列数据 {{v11,v12,…},{v21,v22,…},…} 数据行列表 array 数组包括 SparseArray、QuantityArray 等 tseries TimeSeries、EventSeries 或 TemporalData 对象 Dataset[…] 数据集 Tabular[…] 表格对象 - 请到以下参考页面了解完整的基本信息:
-
Import, Export 从文件导入或导出到文件 CloudImport, CloudExport 从云对象导入或导出到云对象 ImportString, ExportString 从字符串导入或导出到字符串 ImportByteArray, ExportByteArray 从字节数组导入或导出到字节数组
Import 的参数




- Import 的通用参数:
-
"Elements" 该文件可用的参数和选项列表 "Rules" 所有可用参数的规则列表 "Summary" 文件摘要 - 表示数据的参数:
-
"Data" 二维数组 "Grid" 作为 Grid 对象的表格数据 "RawData" 二维数组字符串 "Dataset" 作为 Dataset 列表数据 "Tabular" 用 Tabular 对象表示的表格数据 - 数据描述符元素:
-
"ColumnLabels" 列的名称 "ColumnTypes" 列的名称和类型的关联 "Schema" TabularSchema 对象 - 默认情况下,Import 与 Export 使用 "Data" 参数.
- 对于部分数据导入,任何数据表示参数 elem 可用 {elem, rows, cols} 格式指定行和列,其中 rows 和 cols 可为以下任意:
-
n 第 n 行或列 -n 从末尾计数 n;;m 从 n 到 m n;;m;;s 从 n 到 m 步长为 s {n1,n2,…} 特定的行和列 ni - 元数据参数:
-
"ColumnCount" 列数 "Dimensions" 行数列表和最大列数 "RowCount" 行数
选项
- Import 与 Export 选项:
-
"EmptyField" "" 如何表示空白字段 "QuotingCharacter" "\"" 用于分隔非数字字段的字符 - 数据区域内包含逗号或行分隔符通常用双引号字符包围. 默认情况下,Export 使用创引号字符作为分隔符. 指定不同字符使用 "QuotingCharacter".
- 默认情况下,并不导入双引号字符分隔的文本字段.
- Import 选项:
-
CharacterEncoding "UTF8ISOLatin1" 文件中行字符串使用的编码 "ColumnTypeDetectionDepth" Automatic 用于标题检测的行的数量 "CurrencyTokens" None 当导入数值值时会跳过货币单位 "DateStringFormat" None 日期格式,按 DateString 规范给出 "FieldSeparator" "\t" 字符串标记,用于分隔列 "FillRows" Automatic 是否将行按最大列长填满 "HeaderLines" Automatic 假设为开头的行数 "IgnoreEmptyLines" True 是否忽略空白行 MissingValuePattern Automatic 用于指定缺失元素的模式 "NumberPoint" "." 小数点字符串 "Numeric" Automatic 如果可以的话是否将数据字段导入为数字 "Schema" Automatic 用于构建 Tabular 对象的方法 "SkipInvalidLines" False 是否跳过无效的行 "SkipLines" Automatic 文件开头处跳过的行数 - 在默认情况下,Import 尝试将数据解释为 "UTF8" 编码文本. 如何文件中存储的任意位数序列不能用 "UTF8" 表示,则 Import 使用 "ISOLatin1" 替代.
- 用 CharacterEncoding -> Automatic, Import 将尝试推断文件的字符编码.
- 以下为 "HeaderLines" 和 "SkipLines" 的可能设定:
-
Automatic 尝试自动确定要跳过多少行或用作标题的行的数量 n 跳过 n 行或作为 Dataset 的标题使用 {rows,cols} 跳过行和列或作为标题使用 - "Schema" 选项可用的设置包括:
-
schema 完整的 TabularSchema 指定 propval schema 属性和值(请阅读 TabularSchema 的参考页面) <|"prop1"val1,…|> schema 属性和值的关联 - Import 把由 "DateStringFormat" 选项指定格式化的表格项转换 DateObject.
- Export 的选项:
-
Alignment None 数据如何在表格行中对应 CharacterEncoding "UTF8" 文件中行字符串使用的编码 "FillRows" False 是否将行按最大列长填满 "IncludeQuotingCharacter" Automatic 是否为导出的值添加引号 "TableHeadings" Automatic 表格行和列的标题 - Alignment 的可用设定为 None、Left、Center 和 Right.
- "IncludeQuotingCharacter" 可被设置为以下值:
-
None 不要将任何值用引号引起来 Automatic 仅在需要时用引号将值引起来 All 用引号将有效的值引起来 - "TableHeadings" 可设置为以下值:
-
None 跳过列的标签 Automatic 导出列的标签 {"col1","col2",…} 列标签的列表 {rhead,chead} 为行和列指定单独的标签 - Export 使用运行 Wolfram 语言的计算机系统的常用规范编码行分隔字符.
范例
打开所有单元 关闭所有单元范围 (8)
导入 (4)
将 TSV 文件导入为 Tabular 对象,自动检测标题:
导出 (4)
导出一个 Tabular 对象:
用 "TableHeadings" 选项删除 Tabular 对象的标题:
导出一个 TimeSeries:
导出一个 EventSeries:
导出一个 QuantityArray:
导入的参数 (26)
"Data" (6)
"Dataset" (3)
"Grid" (1)
导入 TSV 数据为 Grid:
"RawData" (3)
"Schema" (1)
获取 TabularSchema 对象:
"Tabular" (6)
将 CSV 文件导入为 Tabular 对象:
导入的选项 (15)
CharacterEncoding (1)
字符串编码可用 $CharacterEncodings 设定为任意值:
"CurrencyTokens" (1)
使用 "CurrencyTokens"->None 来包含货币符号:
"DateStringFormat" (1)
用指定的数据格式将数据转换为 DateObject:
MissingValuePattern (1)
"Numeric" (1)
使用 "Numeric"->True 解释数字:
"Schema" (1)
Import 会自动从存储在 TSV 文件中的数据推断列的标签和类型:
"SkipLines" (1)
导出的选项 (7)
CharacterEncoding (1)
字符串编码可通过 $CharacterEncodings 设置任意值:
"IncludeQuotingCharacter" (1)
"QuotingCharacter" (1)
"TableHeadings" (1)
可能存在的问题 (12)
用 "Backend""Table" 避免跳过这些行:
格式为 "nnnDnnn" 或 "nnnEnnn" 的条目被解释为用科学计数法表示的数字:
从 14.2 版开始,当由整数组成的列包含大于 Developer`$MaxMachineInteger 的数字时,会添加引号字符:
用 "IncludeQuotingCharacter"->None 恢复以前的结果:
用 MissingValuePatternNone 覆盖这种解释:
从 14.2 版开始,小数部分为 0 的实数将被导出为整数:
从 14.2 版开始,大于 Developer`$MaxMachineInteger 的整数被导入为实数:
从 14.2 版开始,用 DateString 导出 Tabular 对象的日期和时间列:
由旧版本 Wolfram 语言生成的部分 TSV 数据可能含有不正确的文本分割区域,且在版本 11.2 中无法按预期导入:
使用 "QuotingCharacter""" 将会给出之前预测的结果:
导入带有行和列标题的 Dataset 时左上角的数据丢失:
取决于数据的维度,Dataset 看起来可能会不一样:
历史
1999年引入 (4.0) | 在以下年份被更新:2019 (12.0) ▪ 2025 (14.2) ▪ 2025 (14.3)