Python如何将字符串首尾改为双引号并替换或删除内部双引号?
问题原因
原代码不生效有两个核心问题:
- 字符串是Python中的不可变类型,
replace方法只会返回替换后的新字符串,不会修改原列表中的元素,你没有把处理后的结果存储下来 - 原生Python的字符串
replace方法不支持字典入参和regex关键字参数,这个写法是pandas Series对象的专属API,遍历普通列表的字符串时无法生效
实现方案
方案1:得到第二种输出(移除所有引号)
遍历列表逐个替换双引号、单引号为空即可,两种写法可选:
普通循环写法
original_list = [ "sentence_1", 'sentence_2 of "me"'] processed_list = [] for item in original_list: processed_item = item.replace('"', '').replace("'", '') processed_list.append(processed_item)
列表推导式写法(更简洁)
original_list = [ "sentence_1", 'sentence_2 of "me"'] processed_list = [item.replace('"', '').replace("'", '') for item in original_list]
处理后输出为:
["sentence_1", "sentence_2 of me"]
方案2:得到第一种输出(双引号替换为单引号)
仅替换双引号为单引号即可:
original_list = [ "sentence_1", 'sentence_2 of "me"'] processed_list = [item.replace('"', "'") for item in original_list]
处理后输出为:
[ "sentence_1", "sentence_2 of 'me'" ]
如果你操作的是pandas Series
如果你原本就是要处理pandas的序列结构,修改正则匹配规则即可生效:
import pandas as pd series = pd.Series([ "sentence_1", 'sentence_2 of "me"']) # 实现第二种输出(移除所有引号) processed_series = series.replace(r'["\']', '', regex=True) # 实现第一种输出(双引号换单引号) processed_series = series.replace(r'"', "'", regex=True)
内容的提问来源于stack exchange,提问作者jos97
相关产品推荐
相关产品推荐

