簡體   English   中英

如何從字符串中刪除斜杠、字母和數字?

[英]How to remove slash, letters and numbers from a string?

我試圖獲得一個漂亮而干凈的字符串表示。 我想要的版本是 ['課程編號:CLASSIC 10A | 課程名稱:希臘文明概論1 | 課程單元:4']

但是,當前輸出是['課程編號:CLASSIC\\xa010A | 課程名稱:希臘文明概論1 | 課程單元:4']。

某些東西 (\\xa) 擋住了第一個元素。 我將附上下面的代碼部分。 預先感謝您幫助我。

all_tds = [get_tds(scrollable) for scrollable in scrollables]
def num_name_unit(list, index):
    all_rows = []
    num = list[index][0].get_text(strip=True)
    name = str.isalnum, list[index][1].get_text(strip=True)
    unit = list[index][2].get_text(strip=True)
    all_rows += [('Course Number: {0} | Course Name: {1} | Course Unit: {2}'.format(num, name, unit)]
    return all_rows
c = num_name_unit(all_tds[0], all_tds.index(all_tds[0]))
print(c)

正如@melpomene 所評論的,字符串 '\\xa0' 是一個字符 - 一個不間斷的空格......你真正需要對這個字符串做的是通過使用regex將它重新格式化為所謂的“原始文本”:

import re
re.sub('[^A-Za-z0-9-|:]+', ' ', str)

這通常是我刪除特殊字符/格式的首選方法 - 但它是如何工作的......如果我們查看第一組引號'[^A-Za-z0-9-|:]+'我們會看到我們聲明的第一件事是AZ ,它僅表示從 A 到 Z 全部為大寫字母。 然后我們從az all 得到小寫。 之后我們有0-9顯示從 0 到 9 的所有值,最后我們有|:這意味着任何冒號或管道......讓我們用一個簡單的腳本測試它:

import re
vals = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|:'
print(vals == re.sub('[^A-Za-z0-9-|:]+', ' ', vals))

我建議您自己運行此代碼進行嘗試,但您得到的答案是True

將其合並到您的腳本中將非常簡單:

import re
all_tds = [get_tds(scrollable) for scrollable in scrollables]
def num_name_unit(list, index):
    all_rows = []
    num = list[index][0].get_text(strip=True)
    name = str.isalnum, list[index][1].get_text(strip=True)
    unit = list[index][2].get_text(strip=True)
    all_rows += [('Course Number: {0} | Course Name: {1} | Course Unit: {2}'.format(num, name, unit)]
    return all_rows
c = num_name_unit(all_tds[0], all_tds.index(all_tds[0]))
print(re.sub('[^A-Za-z0-9-|:]+', ' ', c))

如果您遇到希望包含在字符串中的任何其他值,只需將它們添加到^A-Za-z0-9-|: 例如,如果您還希望保留下划線,則只需使用'[^A-Za-z0-9-|:_]+'希望這會有所幫助。 要閱讀更多信息,請轉到 python3 文檔的正則表達式 how to 部分

暫無
暫無

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

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