我有一個包含許多單詞的字串,我想將所有a以串列開頭的單詞存盤起來。
uj5u.com熱心網友回復:
yourlist = [word for word in yourstring.split() if word.startswith("a")]
uj5u.com熱心網友回復:
如果首先我們將字串轉換為單詞串列會更容易。
words = s.split()
我們將創建一個名為的新串列a_words,其中包含所有以“a”開頭的單詞
a_words = []
for word in words:
if word[0].lower() == 'a':
a_words.append(word)
現在我們完成了,但這可以簡化
words = s.split()
a_words = filter(lambda word: word[0].lower() == 'a', words)
uj5u.com熱心網友回復:
也許比其他答案復雜一點,但這也有效。
text = "Happy Ape comes around"
list = []
for i in text.split():
x = i.lower()
if x.startswith("a"):
list.append(i)
print(list)
輸出: ['Ape', 'around']
uj5u.com熱心網友回復:
您應該看看正則運算式 (RE) 模塊。
檔案在這里
該方法re.findall(...)將查找與正則運算式匹配的所有運算式并回傳它們的串列。
import re
string = "Ah, this is an absolutely amazing example"
re.findall('(?:\s|^)((?=a|A)\w*)', string)
# -> ["Ah", "an", "absolutely", "amazing"]
在這里,您可以選擇以“a”或“A”開頭的任何單詞。解釋 :
(?:\s|^):(?:非選擇性組\s任何空格或制表符|&^或字串開頭
((?=a|A)\w*)(?=a|A)'a' 或 'A' 的非選擇性組\w*任何單詞字符至少零次(&)選擇性組,這將是回傳的字串。
--EDIT--
經過快速基準測驗,RegEx 方法似乎比@Botahamec 提出的 Filter 方法慢
def regex_method(s):
start = timer()
re.findall('(?:\s|^)((?=a|A)\w*)', s)
end = timer()
return( timedelta(seconds=end-start) )
def filter_method(s):
start = timer()
words = s.split()
a_words = filter(lambda word: word[0].lower() == 'a', words)
end = timer()
return( timedelta(seconds=end-start) )
len(s)
# -> 27000000
print(regex_method(s))
# -> 0:00:01.231664
print(filter_method(s))
# -> 0:00:00.759951
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/419857.html
標籤:
上一篇:java中的回文
