簡體   English   中英

如何從字符串中刪除外國轉義引號? Python

[英]How to remove foreign escaped quotes from string? Python

我已經解析了一個 HTML 文件並使用 Beautiful Soup 提取了文本,但是抓取的一些文本可能包含不正確的引號(不同的字體或字符等),因此在我打印到的 JSON 文件中,我看到了轉義的引號。 我試圖用空字符串替換它們,但由於它們與我從鍵盤鍵入的引號不兼容,我不認為它們在我的 replace() 函數中被識別為引號,這意味着替換函數是不工作。 我還嘗試通過在要替換的內容前面放一個小“r”來將替換聲明為原始字符串,但這沒有任何區別。 如何刪除轉義的引號?

代碼:

'tag': div.text.split(',', 1)[0].replace('\n', '').replace('\u00a0', ' ').replace(r'\"', ''), # remove chars ',', ' \n', and '\u00a0',

JSON:

{
    "tag": "\"Data Scientists You May Know\" suggester",
    "definition": "",
    "source": [
        {
            "title": "Data Scientists You May Know",
            "URL": "https://learning.oreilly.com/library/view/data-science-from/9781492041122/ch01.html#RSdata01"
        },
        {
            "title": "Data Scientists You May Know",
            "URL": "https://learning.oreilly.com/library/view/data-science-from/9781492041122/ch01.html#idm45635773432952"
        }
    ]
},

如您所見,標簽名稱是"\\"Data Scientists You May Know\\" suggester" ,而它應該只是"Data Scientists You May Know suggester"

因此,有問題的網站呈現如下:

網站截圖

那些花引號指向不同的打開和關閉方式,它們被稱為“智能引號”,它們的 UTF-16 十六進制代碼是 201C 和 201D。

因此,要刪除它們,您可以使用這些代碼而不是r'\\"'

.replace('\u201c', '').replace('\u201d', '') 

但是一般如何解決這樣的問題呢?

您可以直接從站點復制文本並將其保存在UTF-16編碼的文本文件中。 然后查看文件的二進制內容,例如在 linux/macOS 上使用hexdump命令,找到字符代碼並將它們轉換為 Python 字符串,如'\\u\u0026lt;4-character hex unicode sequence>'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM