繁体   English   中英

如何使用正则表达式在单引号之间查找双引号?

[英]how to find double quotes between single quotes using regex expression?

我有一个字符串,如“你如何”,我想用 python 中的正则表达式将“是”周围的引号内的引号替换为 \”

input_file =  'D:/Extracts/yourFileName.csv'
file_output= 'D:/Extracts/yourFileName_out.csv'

with open(input_file, 'r',encoding="utf8") as f, open(file_output, 'w',encoding="utf8") as fo:
    for line in f:
        fo.write(line.replace('"', '\"').replace(""", ""))

我想要 output 像"how \"are\" you"

字符串'\"''"'是相同的:它们都只是一个双引号,因为序列\"编码了一个双引号字符(通常用于" -quoted 字符串)。

如果你真的想在引号前加一个反斜杠,你必须转义它:

fo.write(line.replace('"', '\\"'))

为了不替换第一个和最后一个字符,您可以改用正则表达式:

fo.write(re.sub('(?<!^)"(?!$)', '\\"', line))

正则表达式由一个否定的lookbehind ( (?<!^) ; 断言没有行在引号之前开始)、引号字符本身和一个否定的lookahead ( (?!$) ; 断言没有行在引号之后结束)。

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM