[英]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.