字符串替换而不替换/划分数字数据

String replace without replacing / dividing numeric data

在 R 中使用 stringr 包执行字符串替换。文本文件有 2 headers,第 1 行 header 和 sub-header,第 2 行。我使用 read_lines(n_max=1) 得到一个row 和 skip=n 定位到下一行。我需要一个正确的正则表达式或模式来在替换“|”时保留数字数据(和日期数据)只能用逗号“,”。

dat_subheader <- read_lines("1999-0.txt", skip=1, n_max=1)
dat_row1 <- read_lines("1999-0.txt", skip=2, n_max=1)
[1] "# XD|A Code|S Code|C Code|Site ID|Parameter|POC|Sample Duration|Unit|Method|Date|Start Time|Sample Value|Null Data Code|Sampling Frequency|Monitor Protocol (MP) ID|Qualifier - 1|Qualifier - 2|Qualifier - 3|Qualifier - 4|Qualifier - 5|Qualifier - 6|Qualifier - 7|Qualifier - 8|Qualifier - 9|Qualifier - 10|Alternate Method|Uncertain"
[1] "# XC|A Code|S Code|C Code|Site ID|Parameter|POC|Unit|Method|Year|Period|Number of Samples|Composite Type|Sample Value|Monitor Protocol (MP) ID|Qualifier - 1|Qualifier - 2|Qualifier - 3|Qualifier - 4|Qualifier - 5|Qualifier - 6|Qualifier - 7|Qualifier - 8|Qualifier - 9|Qualifier - 10|Alternate Method |Uncertain"

数据内容列表:

[1] "XD|I|01|027|0001|88101|1|7|105|120|19990103|00:00||AS|3|||||||||||||"

现在使用函数 str_replace_all 来尝试替换所有出现的“|”逗号“,”。我的 str_replce_all() 是这样设置的:

str_replace_all(dat_row1, "|", ",") 

但结果甚至用逗号“,”替换了数字数据和日期。我知道我缺少此替换的正确模式,需要一些有用的想法。竖线“|”只作为定界符,只有这个定界符需要改成逗号“,”。非常感谢在正确方向上的帮助。


结果显示替换不正确。

[1] ",X,D,|,I,|,0,1,|,0,2,7,|,0,0,0,1,|,8,8,1,0,1,|,1,|,7,|,1,0,5,|,1,2,0,|,1,9,9,9,0,1,0,3,|,0,0,:,0,0,|,|,A,S,|,3,|,|,|,|,|,|,|,|,|,|,|,|,|,"

您需要使用转义符\

>str_replace_all("XD|I|01|027|0001|88101|1|7|105|120|19990103|00:00||AS|3|||||||||||||", "\|", ",")
[1] "XD,I,01,027,0001,88101,1,7,105,120,19990103,00:00,,AS,3,,,,,,,,,,,,,"