gpt4 book ai didi

R gsub/str_replace 返回反斜杠

转载 作者:行者123 更新时间:2023-12-05 08:07:49 25 4
gpt4 key购买 nike

我需要将数据框插入到 SQL 数据库中。我已经构建了脚本(使用循环、str_c、RODBC)将我的数据框转换为 SQL 插入命令,但我遇到了单个“'”破坏 SQL 的问题。

这是问题的一个例子:

数据框看起来像这样:

pk  b
1 o'keefe

所需的 SQL 输出是:INSERT INTO table (pk, b) (1, 'o\'keefe')

gsub("'", "\'", str_replace_na(df$b[1], ""))

[1] "o'keefe"

gsub("'", "\\\\'", str_replace_na(df$b[1], ""))

[1] "o\\'keefe"

我已经尝试过 str_replacestr_replace_all、gsub w/fixed = TRUEperl = TRUE 以及我得到相同的结果。

我知道关于 How to give Backslash as replacement in R string replace 的评论,其中说明 cat() 显示斜杠。但这不会转移到我的数据框或 SQL 查询。

非常感谢对此问题的任何帮助!


附加说明,我知道 R 打印了一个双反斜杠,如引用 http://r.789695.n4.nabble.com/gsub-replacing-double-backslashes-with-single-backslash-td4453328.htmlR: How to replace space (' ') in string with a *single* backslash and space ('\ ')即使只有一个斜杠真的存在。但是,当存在零个或两个反斜杠时,我的 SQL 语句仍然不起作用。

最佳答案

"o\\'keefe" 实际上是您想要的:双黑斜杠实际上是单个反斜杠的表示。

例如:

\U005C 是反斜杠的 unicode 字符。然而:

"\U005C"

[1] "\\"

虽然\U002F 是正斜杠的 unicode 字符,并且:

"\U002F"

[1] "/"

所以您的第二个解决方案已经满足了您的需求。删除不必要的 str_replace_na():

gsub("'", "\\\\'", df$b[1])

[1] "o\\'keefe"

注意:事实上归功于@Rui Barradas,他表明双反斜杠代表单个反斜杠:

nchar("\\")

[1] 1

关于R gsub/str_replace 返回反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53018646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com