我有一些带有“”(双引号)的记录的数据文件。我需要使用 regexp_replace 函数将这些引号替换为 scala 中的空格。
示例:regexp_replace(column_name, '\"' ," ")但是当我尝试这样做时,我收到了一些错误“未闭合”字符串文字。
我有一些带有“”(双引号)的记录的数据文件。我需要使用 regexp_replace 函数将这些引号替换为 scala 中的空格。
示例:regexp_replace(column_name, '\"' ," ")但是当我尝试这样做时,我收到了一些错误“未闭合”字符串文字。
从使用regexp_replace和提及列中,我假设您的意思是 Spark(如果是这样,您应该在以后的任何问题中提及它)。查看两个重载的签名:
def regexp_replace(e: Column, pattern: Column, replacement: Column): Column
def regexp_replace(e: Column, pattern: String, replacement: String): Column
'\"'是 a Char,而不是 a String,所以你需要"\""。
在没有 Spark 的 Scala 中,您将使用 on 之类replace{All,FirstSome}In的方法scala.util.matching.Regex(主要针对发现此问题的其他人提及)。
更新:
val colString = insertColumns.mkString(",") + s"${month},concat(year(from_unixtime(unix_timestamp((regexp replace(column_name,'\"',"")), 'yyyy-MM-dd-HH.mm.ss.SSSSSS'))),'-',lpad(month(from_unixtime(unix_timestamp((regexp_replace(column_name,'\"',"")), 'yyyy-MM-dd-HH.mm.ss.SSSSSS'))),2,'0'),'-',lpad(day(from_unixtime(unix_timestamp((regexp_replace(column_name,'\"',"")), 'yyyy-MM-dd-HH.mm.ss.SSSSSS'))),2,'0')) AS column_name"
这里后面的字符串+只有
s"${month},concat(year(from_unixtime(unix_timestamp((regexp replace(column_name,'\"',"
然后你有单独的字符串文字
")), 'yyyy-MM-dd-HH.mm.ss.SSSSSS'))),'-',lpad(month(from_unixtime(unix_timestamp((regexp_replace(column_name,'\"',"
等等
\"inside ans"..." 不能按预期工作,因此转义引号\"不起作用;您应该使用三引号字符串。