在 R 中使用多个定界符从 .txt 文件中读取数据
Reading data from .txt file with multiple delimiter in R
谁能告诉我如何从具有多个分隔符的 .txt 文件中读取数据。考虑以下示例以供参考,
<迈克>////????[011]-[234564]///>>>>[ABC]
<哈德利戴维森>///??[080]-[42071186]..[DEC]
我的输出应该如下,
迈克 011234564 美国广播公司
哈德利戴维森 08042071186 DEC
感谢和问候,
墨涵
我们可以使用 readLines
读取它,然后使用正则表达式删除不需要的字符
gsub('(?<=[0-9])\s+(?=[0-9])|^\s+|\s+$', '',
gsub('[[:punct:]]+', ' ', lines), perl=TRUE)
#[1] "Mike 011234564 ABC" "Hardley davidson 08042071186 DEC"
或者如果模式相似,我们可以使用单个 sub
sub(".*\<([^> ]+)[^0-9]+([0-9]+)[^0-9]+([0-9]+)[^A-Z]+([A-Z]+).*",
"\1 \2\3 \4", lines)
#[1] "Mike 011234564 ABC" "davidson 08042071186 DEC"
数据
lines <- readLines(textConnection("< Mike >////????[011]-[234564]///>>>[ABC]
< Hardley davidson >///??[080]-[42071186]..[DEC]"))
谁能告诉我如何从具有多个分隔符的 .txt 文件中读取数据。考虑以下示例以供参考,
<迈克>////????[011]-[234564]///>>>>[ABC]
<哈德利戴维森>///??[080]-[42071186]..[DEC]
我的输出应该如下,
迈克 011234564 美国广播公司
哈德利戴维森 08042071186 DEC
感谢和问候, 墨涵
我们可以使用 readLines
读取它,然后使用正则表达式删除不需要的字符
gsub('(?<=[0-9])\s+(?=[0-9])|^\s+|\s+$', '',
gsub('[[:punct:]]+', ' ', lines), perl=TRUE)
#[1] "Mike 011234564 ABC" "Hardley davidson 08042071186 DEC"
或者如果模式相似,我们可以使用单个 sub
sub(".*\<([^> ]+)[^0-9]+([0-9]+)[^0-9]+([0-9]+)[^A-Z]+([A-Z]+).*",
"\1 \2\3 \4", lines)
#[1] "Mike 011234564 ABC" "davidson 08042071186 DEC"
数据
lines <- readLines(textConnection("< Mike >////????[011]-[234564]///>>>[ABC]
< Hardley davidson >///??[080]-[42071186]..[DEC]"))