簡體   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