有没有办法从 ASC 文件中逐行读取并在特定子字符串后检查它?

Posted

技术标签:

【中文标题】有没有办法从 ASC 文件中逐行读取并在特定子字符串后检查它?【英文标题】:Is there a way to read line by line from a ASC file and checking it after a specific substring? 【发布时间】:2019-08-09 07:16:15 【问题描述】:

我有一个包含很多行的文件,我想将其转换为数据框架以进行一些数据科学。

逐行阅读我创建了一个小代码sn-p,这似乎不是很好。但这不是主要问题。首先,我只想保存其中包含字符串“CANFD”​​的行。而且我知道由于向量的原因,这不适用于标准 if 构造。子字符串正在工作,是的,数字是正确的。

fileName <- "Data2F001new.ASC"
conn <- file(fileName,open="r")
linn <-readLines(conn)
for (i in 1:length(linn))
  
    tmp <- substring(linn, 12, 16)
    if(tmp=="CANFD")
    system <- substring(linn, 12, 16)
    timestamp <- substring(linn, 0, 10)  
    bytes <- substring(linn, 54, 56)
  channel <- substring(linn, 19,20)
  

close(conn)     

R 说我如下:条件的长度 > 1 并且只使用第一个元素。 预期的输出是带有 CANFD 的行。

【问题讨论】:

【参考方案1】:

欢迎来到 ***!请阅读有关how to ask a good question 和how to give a reproducible example 的信息。这将使其他人更容易帮助您。


下面是一个例子:

## Create a temp file as dummy example
tmp <- tempfile(fileext = ".txt")
con <- file(tmp, open = "rw")
## Write some lines into the file
writeLines(sample(LETTERS, 1000, replace = TRUE), con)

## read the lines
all_lines <- readLines(con) ## each element represents one line

## filter lines which contain an 'A'
## in your case you want something like grep("CANFD", all_lines)
## see ?grep for further info
all_lines[grep("A", all_lines)]
close(con)

【讨论】:

谢谢,现在我有了所有带有“CANFD”​​的行号。但是我现在怎么读呢? 不清楚你在问什么,上面的代码返回所有行(即每个元素对应于文档中的一行的向量),其中包含 ACANFD 在你的案子)。没有您的原始数据和更多信息,我无法提供更多帮助。 是的,它只返回向量中的行号。我需要该行的全部内容。

以上是关于有没有办法从 ASC 文件中逐行读取并在特定子字符串后检查它?的主要内容,如果未能解决你的问题,请参考以下文章

在一个非常大的文件中逐行读取特定的行

如何在目标c中逐行解析JSON文件

从文件中逐行读取并存储到二维数组中

在python中逐行读取大文件

Python从txt文件中逐行读取数据

如何从 C++ 中的文本文件中逐行读取整数? [复制]