Python 删除"&引用;及\&引用;一串
我的项目是使用gspread模块从Google工作表中捕获日志号。但现在的问题是,捕获的日志号是字符串“\1300”的形式。我只想要字符串中的数字,但无法使用下面的代码将其删除 尝试使用.replace()函数将“\”替换为“”,但失败Python 删除"&引用;及\&引用;一串,python,python-3.x,Python,Python 3.x,我的项目是使用gspread模块从Google工作表中捕获日志号。但现在的问题是,捕获的日志号是字符串“\1300”的形式。我只想要字符串中的数字,但无法使用下面的代码将其删除 尝试使用.replace()函数将“\”替换为“”,但失败 a='.\1362' a.replace('\\',"") 应获取不带符号的字符串“1362”。 但是得到的结果是“^2”您的字符串应该包含两个反斜杠,如下所示\\1362或使用r'.\1362'(将字符串声明为原始字符串,然后在编译时将其转换为正常字符串)。
a='.\1362'
a.replace('\\',"")
应获取不带符号的字符串“1362”。
但是得到的结果是“^2”您的字符串应该包含两个反斜杠,如下所示
\\1362
或使用r'.\1362'
(将字符串声明为原始字符串,然后在编译时将其转换为正常字符串)。如果只有一个反斜杠,Python将理解\136
意味着^
,正如您所看到的(ref:)您的字符串应该包含两个反斜杠,例如\\1362
或使用r.\1362'
(它将字符串声明为原始字符串,然后在编译期间将其转换为正常字符串)。如果只有一个反斜杠,Python将理解\136
意味着^
,正如您所看到的(ref:)问题是\136
具有特殊的含义(类似于\n
对于换行符,\t
对于选项卡等)。它似乎表示^
请查看以下示例:
a='.\1362'
a=a.replace(“\\”,“”)
印刷品(a)
b=r'.\1362'
b=b.替换(“\\”,“”)
印刷品(b)
产生
.^2
.\1362
现在,如果您的Google Sheets模块发送的是\1362
,而不是\\1362
,则很可能是因为您实际上应该接收^2
。或者,您的字符编码在某种程度上存在问题
我在b
变量上加上的r
修饰符意味着原始字符串,这意味着Python不会解释反斜杠,而不处理字符串。这仅在手动键入字符串时才真正有用,但您可以尝试:
a=r'{}.格式(yourStringFromGoogle)
Edit:正如注释中指出的,原始代码实际上放弃了.replace()方法的结果。我已经更新了代码,但请注意字符串插值问题仍然是一样的。问题是
\136
具有特殊意义(类似于\n
对于换行符,\t
对于制表符等)。它似乎表示^
请查看以下示例:
a='.\1362'
a=a.replace(“\\”,“”)
印刷品(a)
b=r'.\1362'
b=b.替换(“\\”,“”)
印刷品(b)
产生
.^2
.\1362
现在,如果您的Google Sheets模块发送的是\1362
,而不是\\1362
,则很可能是因为您实际上应该接收^2
。或者,您的字符编码在某种程度上存在问题
我在b
变量上加上的r
修饰符意味着原始字符串,这意味着Python不会解释反斜杠,而不处理字符串。这仅在手动键入字符串时才真正有用,但您可以尝试:
a=r'{}.格式(yourStringFromGoogle)
Edit:正如注释中指出的,原始代码实际上放弃了.replace()方法的结果。我已经更新了代码,但请注意字符串插值问题仍然是一样的。这里发生的事情是,
\1362
由于反斜杠而被编码为^2
,因此您需要在使用字符串之前将其设置为原始字符串,您可以通过
a = r'{}'.format(rawInputString)
或者,如果您使用的是python3.6+,您也可以这样做
a = rf'{rawInputString}'
此处发生的情况是,由于反斜杠的原因,
\1362
被编码为^2
,因此您需要先将字符串设置为原始字符串,然后才能使用它,您可以通过
a = r'{}'.format(rawInputString)
或者,如果您使用的是python3.6+,您也可以这样做
a = rf'{rawInputString}'
如果执行
a='.\1362'
,a
将只有三个字节:
a = '.\1362'`
print(len(a)) # => 3
这是因为\132
表示单个字符。如果要创建带有点、斜杠和数字1362的六字节字符串,则需要转义反斜杠或创建原始字符串:
a = r'.\1362'
print(len(a)) # => 6
在任何一种情况下,对字符串调用replace
都不会替换该字符串中的字符a
仍将是调用replace
之前的状态。相反,replace
返回一个新字符串:
因此,如果要替换字符,可以调用replace
,但必须将结果保存在新变量中或覆盖旧变量
有关详细信息,请参见官方python文档中的。如果执行
a='.\1362'
,a
将只有三个字节:
a = '.\1362'`
print(len(a)) # => 3
这是因为\132
表示单个字符。如果要创建带有点、斜杠和数字1362的六字节字符串,则需要转义反斜杠或创建原始字符串:
a = r'.\1362'
print(len(a)) # => 6
在任何一种情况下,对字符串调用replace
都不会替换该字符串中的字符a
仍将是调用replace
之前的状态。相反,replace
返回一个新字符串:
因此,如果要替换字符,可以调用replace
,但必须将结果保存在新变量中或覆盖旧变量
有关详细信息,请参见官方python文档中的。我需要获取的整数值。\1234以便与网站上的实际最新版本号进行比较,该版本号是一个整数值,可以继续执行其他函数。由于字符串是不可变的,因此a.replace(“\\”,“”)后面不是print(a)只需打印原稿?哈哈,哦,孩子,你当然是对的!然而,在本例中,它不会改变结果。replace方法仍然在已解释的字符串上运行。我将用正确的代码更新most。非常感谢。