繁体   English   中英

使用替换从字符串中删除字符不起作用

[英]Remove Characters from string with replace not working

我有许多字符串,我打算使用替换从这些字符串中删除字符。 但是,这似乎似乎醒了。 举一个简化的例子,这段代码:

row = "b'James Bray,/citations?user=8IqSrdIAAAAJ&hl=en&oe=ASCII,1985,6020,188.12,42,1.31,76,2.38'"
row = row.replace("b'", "").replace("'", "").replace('b"', '').replace('"', '')
print(row.encode('ascii', errors='ignore'))

仍然输出这个b'James Bray,/citations?user=8IqSrdIAAAAJ&hl=en&oe=ASCII,1985,6020,188.12,42,1.31,76,2.38'我希望它输出James Bray,/citations?user=8IqSrdIAAAAJ&hl=en&oe=ASCII,1985,6020,188.12,42,1.31,76,2.38 我怎样才能做到这一点?

编辑:使用一个更好的示例更新了代码。

您似乎将单引号误认为双引号。 简单替换 'b

>>> row = "xyz'b"
>>> row.replace("'b", "")
'xyz'

作为str.replace的替代方法,您可以简单地对字符串进行切片以删除不需要的前导和尾随字符:

>>> row[2:-1]
'James Bray,/citations?user=8IqSrdIAAAAJ&hl=en&oe=ASCII,1985,6020,188.12,42,1.31,76,2.38'

在您的第一个.replace ,将b'更改为'b 因此,您的代码应为:

>>> row = "xyz'b"
>>> row = row.replace("'b", "").replace("'", "").replace('b"', '').replace('"', '')
#                      ^ changed here
>>> print(row.encode('ascii', errors='ignore'))
xyz

我假设您所拥有的其余条件是您在此处未提到的其他任务/比赛的一部分。

如果您只想将字符串放在第一个'之前,那么您可以这样做:

row.split("'")[0]

您尚未列出要删除的'b

.replace("'b", '')
import ast
row = "b'James Bray,/citations?user=8IqSrdIAAAAJ&hl=en&oe=ASCII,1985,6020,188.12,42,1.31,76,2.38'"

b_string = ast.literal_eval(row)
print(b_string)
u_string = b_string.decode('utf-8')
print(u_string)

出:

b_string:b'James Bray,/citations?user=8IqSrdIAAAAJ&hl=en&oe=ASCII,1985,6020,188.12,42,1.31,76,2.38'
u_string: James Bray,/citations?user=8IqSrdIAAAAJ&hl=en&oe=ASCII,1985,6020,188.12,42,1.31,76,2.38

真正的问题是如何将字符串转换为python对象。

您将获得一个包含二进制字符串的字符串,要将其转换为python的二进制字符串对象,应使用eval() ast.literal_eval()是更安全的方法。

现在,您将获得一个二进制字符串,您可以使用decode()将其转换为不以“ b”开头的unicode字符串。

暂无
暂无

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

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