Python 如果字符串以开头,则替换子字符串

Python 如果字符串以开头,则替换子字符串,python,string,pandas,function,replace,Python,String,Pandas,Function,Replace,我正在尝试编写以下函数: def d (row): if df['name'].str.startswith('"'): return df['name'].str.replace("'","''") else: return df['name'] df['name2'] = df.apply(lambda row: d(row), axis=1) 每当一个字符串在一个缩略语中有一个撇号时,我会尝试添加第二个撇号。仅当我有双引号字符串时才会出现此

我正在尝试编写以下函数:

def d (row):
    if df['name'].str.startswith('"'):
        return df['name'].str.replace("'","''")
    else:
        return df['name']
df['name2'] = df.apply(lambda row: d(row), axis=1)
每当一个字符串在一个缩略语中有一个撇号时,我会尝试添加第二个撇号。仅当我有双引号字符串时才会出现此选项

我继续得到一个“KeyError:(“name”,发生在索引0处)


这种情况在我的数据集中只发生过几次,但我需要将“jack's place”替换为“jack's place”,以便将其插入sql查询中。

为什么不能进行完全替换:

df['name2'] = df['name'].str.replace('\'', '"')
print(df)

           name         name2
0           ABC           ABC
1           SDF           SDF
2  jack's place  jack"s place
3  jack's place  jack"s place
4  jack's place  jack"s place

看起来您可能在第一次回信中遗漏了a]谢谢Chris,是的,我在问题中遗漏了它,但问题仍然存在,因为我在脚本中没有遗漏它。您可以发布几行数据吗?谢谢!我目前正在提取的数据集有100多个名称,其中大多数是没有收缩的正常格式字符串。我从一台SQL server中提取输出,然后通过python注入另一台SQL server,大多数情况下输出是“名称1”、“名称2”,但也有一些类似于“jack’s place”-因此我的意图是第1步:为带收缩的字符串添加额外的撇号,然后第2步,将双引号的所有实例替换为单引号-如果我删除了会影响字符串注入sql的所有单引号实例query@John如果在DBs之间移动此数据,DB连接器(如果使用正确)应自动处理此问题!我强烈建议您尝试正确使用连接器,而不是对列的字符串值进行黑客攻击。谢谢Dave!我将继续尝试,在SQL Server和SQL Server(2台不同的服务器)之间进行此操作很好,但我将在SQL Server和Teradata之间进行尝试,后者的灵活性似乎要低得多,因此我想看看在使用Teradata之前是否可以手动执行此操作-我感谢您的见解,但是,任何人都可以为如何做到这一点提供任何帮助,这将是伟大的!我知道,在SQL server中,如果我将quoted_identifier设置为off,我就没有问题,但是如果没有这行代码,我在SQL server中就会遇到问题