PySpark中使用Regexp_replace移除字符串中间的双引号
解决首尾含双引号字符串的中间引号替换问题
需求说明
给定的字符串始终包含首尾双引号,需仅移除其中间的双引号并替换为空格,示例如下:
- 输入:
"pyspark"Data"→ 输出:"pyspark Data" - 输入:
"google"chrome"→ 输出:"google chrome" - 输入:
"master"file"name"→ 输出:"master file name"
Python 实现方案
方法1:字符串切片+替换
直接通过切片剥离首尾引号,替换中间引号后再补回首尾引号:
input_str = '"master"file"name"' output_str = f'"{input_str[1:-1].replace('"', ' "')}"' print(output_str) # 输出:"master file name"
方法2:正则表达式精准匹配
利用正则断言匹配非首尾位置的双引号,避免误替换首尾引号:
import re input_str = '"pyspark"Data"' output_str = re.sub(r'(?<!^)"(?!$)', ' ', input_str) print(output_str) # 输出:"pyspark Data"
正则解释:(?<!^) 确保匹配的引号不在字符串开头,(?!$) 确保不在字符串结尾,仅替换中间的引号。
JavaScript 实现方案
方法1:字符串切片+替换
const inputStr = '"google"chrome"'; const outputStr = `"${inputStr.slice(1, -1).replace(/"/g, ' ')}"`; console.log(outputStr); // 输出:"google chrome"
方法2:正则表达式替换
const inputStr = '"master"file"name"'; const outputStr = inputStr.replace(/(?<!^)"(?!$)/g, ' '); console.log(outputStr); // 输出:"master file name"
内容的提问来源于stack exchange,提问作者Shailesh Kumar
相关产品推荐
相关产品推荐

