【问题标题】:csv file, or tab delimited file, or whatever file [closed]csv 文件,或制表符分隔的文件,或任何文件 [关闭]
【发布时间】:2019-07-17 18:24:53
【问题描述】:

我有一个关于文件的问题。

我问的原因是因为使用了某些功能,例如在 R 中将数据从外部导入到 R。

我有一个文件character_student.txt,其中包含如下数据。

Name, Age, Gender, Test1
john, 11, M, 90
betty, 25, F, 33

我很困惑。上述文件是否被视为 csv 文件(逗号分隔文件)?或者它是一个文本文件?当使用 R 将这个文件导入 R 时,使用 say read.csv(file="character_student.txt) 是否合适?

那么我的另一个问题是,如果我有这样的文件:

Name Age Gender Test1
john 11 M 90
betty 25 F 33

所以每个文件之间只有一个空格,然后说我将其保存为 .csv 文件,然后我认为文件名将变为 character_text.csv。那我就想知道这个文件现在是空格分隔的文件还是逗号分隔的文件?

我想我的问题是我怎么知道我的文件是否是逗号分隔的文件?还是以空格分隔的文件?还是制表符分隔?

是否纯粹基于文件名?例如,如果名称以 csv 结尾,那么它是逗号分隔的文件,如果它以其他内容结尾,那么是“其他内容”分隔文件?那么文件内部的实际外观是否重要呢?就像我们是否必须打开文件以检查是否有逗号分隔字段以确保文件是逗号分隔的文件?或者如果我们有一个 csv 文件但在其中,该字段可以被其他东西分隔?

或者如果它被称为csv,那么里面的每个字段都用逗号分隔(就像我不必打开它来确保它实际上是用逗号分隔一样)?

【问题讨论】:

  • 通过查看?扩展在 Linux 中没有任何意义,CSV 和 ald TAB 分隔的文件也是文本文件,但有一个用户遵循的特殊约定。
  • 这些是分隔文件格式,.csv 扩展名只是一种命名约定(主要来自 Windows 世界),用于将可执行文件映射到文件。它不强制使用内部分隔符。
  • CSV 文件通常使用不同的分隔符,例如制表符 (\t) 和管道 (|)。另见Reading Tab Delimited Data in to RDelimiters while writing csv files in R 和朋友。
  • 不,不是 CSV 中的每个逗号都必须是字段分隔符,并且 CSV 有多种方言。通常,您可以将带有嵌入逗号的字段用双引号括起来。 this,is,"a csv snippet, and has an embedded comma",sigh.
  • 您的第一个文件是每个人都会称之为 CSV 文件的文件,即使扩展名是其他文件。请注意,就像@tink 所说,CSV 有方言。在欧洲大陆或小数点以逗号标记的国家/地区,最常用的字段分隔符是分号";"。在 R 中,这将被读入 read.csv2,而不是 read.csv。仔细阅读帮助页面help("read.table")

标签: r linux bash csv delimiter


【解决方案1】:

扩展不定义文件。它们帮助各种实用程序或工具以指定的方式处理它们。

你编写一个 python 脚本并将其保存为hello.c

然后你将它传递给gcc,比如gcc hello.c

这并没有错。 gcc 将接受处理文件,但会报告大量语法错误。

同样,通过指定.csv,您是在告诉工具、实用程序或函数您正在传递一个逗号分隔的文件。

如果你有这样的文件:

abc def, ghi jkl,

一个用户想要从表单中提取数据:

abcdef,ghijkl,。对于该用户,如果他将其“视为”一个空格分隔的文件,那将是一件好事。对于其他一些想要的用户, abc defghi jkl,将其视为逗号分隔文件对他很有用。

对于特定情况,您需要研究该特定功能或工具并分析他们需要文件的方式。所以是的,如果某个工具希望文件以特定方式显示,您需要进行检查以将文件相应地传递给该工具。

这只是你想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    相关资源
    最近更新 更多