R RegEx gsub()等效于“行操作>删除CSV文件中的空行(包含空白字符)”

问题描述 投票:0回答:1

我有一个带有几列的CSV文件:Tweet,日期等。某些Tweet中的空格导致空行和不希望的截断行。

有效:1.使用记事本++的功能“行操作>删除空行(包含空白字符)”2.搜索并替换:\r不包含任何内容。

但是,我需要对大量文件执行此操作,并且我无法在R中使用gsub()查找正则表达式来执行Notepadd ++函数的工作。

请注意,不使用^[ \t]*$\r?\n替换任何内容,然后不使用\r替换任何内容在Notepad ++中起作用,但在R中则不起作用,如建议的here一样,但不适用于R中的g(sub)。

我尝试了以下代码:

tx <- readLines("tweets.csv") subbed <-gsub(pattern = "^[ \\t]*$\\r?\\n", replace = "", x = tx) subbed <-gsub(pattern = "\r", replace = "", x = subbed) writeLines(subbed, "output.csv")

这是输入:

Problems caused by spacing in Tweets

这是所需的输出:

Desired output

r regex csv gsub
1个回答
0
投票

您可以使用

tx  <- readLines(PATH_TO_FILE)
headers <- tx[1]
data <- grep("^\\w{3} \\w{3} \\d{2} \\d{2}:\\d{2}:\\d{2}.*", tx[-1], value=TRUE)
recombined <- c(headers, data)
recombined

请参见R demo,带有以下示例输入:

tx  <- c("Col1 Col2 Col3 ....", 
          "Mon Jan 06 21:12:34 +000000  Line 1", 
          "Mon Jan 06 21:12:34 +000000  Line 2",
          "",
          "    ",
          "Mon Jan 06 21:12:34 +000000  Line 3",
          "\t\n\t\r     ")

输出为

[1] "Col1 Col2 Col3 ...."                 "Mon Jan 06 21:12:34 +000000  Line 1"
[3] "Mon Jan 06 21:12:34 +000000  Line 2" "Mon Jan 06 21:12:34 +000000  Line 3"
© www.soinside.com 2019 - 2024. All rights reserved.