我在 list 中有一個令牌串列tokens。我在想是否要獲得模式'a-b'或a-b c或的令牌a-b-c。例如:'python-object' 目前我正在使用此代碼:
for token in tokens:
if "-" in token:
print(token)
但這也會導致我不想要的令牌,例如“-python”
uj5u.com熱心網友回復:
與 Cubix 的答案類似,您可以使用[^-]而不是\w使運算式對輸入中的多個破折號具有魯棒性:
這種情況下的模式是:
r"^[^-] -[^-] $"
這里有一些示例代碼來展示它的作業原理:
import re
good_token = 'a-b'
bad_token = 'a-b-c'
if re.match(r"^[^-] -[^-] $", good_token):
print(good_token)
if re.match(r"^[^-] -[^-] $", bad_token):
print(bad_token)
這輸出:
a-b
uj5u.com熱心網友回復:
使用正則運算式:
import re
for token in tokens:
if re.match("^\w -\w", token):
print(token)
^: 字串的開始。\w:匹配任何單詞字符。: 匹配前面的標記 (\w) 一次到無限次。-: 匹配-。\w:匹配任何單詞字符。
此正則運算式檢查令牌是否以 開頭a-b,之后的內容無關緊要。
uj5u.com熱心網友回復:
如果我理解正確,這就是你想要的。
tokens = ["python-object", "a-b", "a-b c", "a-b-c"]
for token in tokens:
if "-" in token:
splited = token.split('-')
joined = " ".join(splited)
print(joined)
輸出:
python object
a b
a b c
a b c
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/445171.html
上一篇:pandas.read_spss是否將日期時間誤讀為unix?
下一篇:替換熊貓中的反引號
