大家好,我有并輸入字串:
list_of_strings = ["apple", "orange ca", "pear sa", "banana sth"]
我想在多個空格(超過 1 個)之后洗掉所有內容,因此最終結果是:
final_list_of_strings = ["apple", "orange ca", "pear", "banana"]
我試過正則運算式:
import re
regex_expression = r"(.*\s?)(\s{2,}.*)"
for name in list_of_strings:
regex_matching_groups = re.findall(regex_expression, name)
if regex_matching_groups:
name = regex_matching_groups[0][0]
但在多個空間失敗......謝謝你的幫助!
uj5u.com熱心網友回復:
您可以re.sub在串列理解中使用:
import re
list_of_strings = ["apple", "orange ca", "pear sa", "banana sth"]
list_of_strings = [re.sub(r'\s{2}.*', '', x, flags=re.S) for x in list_of_strings]
print(list_of_strings)
# -> ['apple', 'orange ca', 'pear', 'banana']
請參閱Python 演示。
在\s{2}.*正則運算式2個空格字符,然后字串的其他部分相匹配(即使有換行字符由于re.S標志)。
uj5u.com熱心網友回復:
使用正則運算式查找第一個單詞和可選的第二個單詞,它們之間只有一個空格
list_of_strings = ["apple", "orange ca", "pear sa", "banana sth"]
my_list=[]
def find_phrase(list_of_strings):
for string in list_of_strings:
matches=re.findall(r"(\w )( \w )*", string)
if len(matches)>0:
my_list.append("".join([matches[0][0],matches[0][1]]))
return my_list
print(find_phrase(list_of_strings))
輸出:
['apple', 'orange ca', 'pear', 'banana']
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/354297.html
下一篇:正則運算式使用星號加粗
