提问人:mac 提问时间:5/10/2023 更新时间:5/10/2023 访问量:65
如何在python中只保留每个列表元素的第一个单词?
How to keep only first word of each list elements in python?
问:
我有如下所示的列表
images =['atr5500-ve-7.8.1 version=7.8.1 [Boot image]' ,
'atr5300-ve-3.4.4','atr5600-ve-7.6.6','atr5300-ve-3.4.4',
'atr2300-ve-8.7.8','atr1200-ve-1.2.2','atr5600-ve-3.2.2']
基本上,我正在寻找有助于仅获取列表中所有元素的第一个单词的关键字,这意味着我期待这样的输出
images =['atr5500-ve-7.8.1' ,
'atr5300-ve-3.4.4','atr5600-ve-7.6.6','atr5300-ve-3.4.4',
'atr2300-ve-8.7.8','atr1200-ve-1.2.2','atr5600-ve-3.2.2']
我知道我必须使用 for 循环并遍历列表,例如 ,但不确定使用什么来剥离该单个列表元素并放回列表中。for i in list: list[i]= .....
答:
0赞
mrxra
5/10/2023
#1
import re
images =['atr5500-ve-7.8.1 version=7.8.1 [Boot image]' ,
'atr5300-ve-3.4.4','atr5600-ve-7.6.6','atr5300-ve-3.4.4',
'atr2300-ve-8.7.8','atr1200-ve-1.2.2','atr5600-ve-3.2.2']
print([re.sub(r'^([^\s]+).*$', '\\1', i) for i in images])
输出:
['atr5500-ve-7.8.1', 'atr5300-ve-3.4.4', 'atr5600-ve-7.6.6', 'atr5300-ve-3.4.4', 'atr2300-ve-8.7.8', 'atr1200-ve-1.2.2', 'atr5600-ve-3.2.2']
评论
0赞
Codist
5/10/2023
为此,RE是矫枉过正。str.split() 就足够了
0赞
mrxra
5/10/2023
公平点...但取决于以下假设:提供的 3 条采样线可以充分反映随时间推移的可能输入。正则表达式在“意外”输入方面往往不那么脆弱/更容易修复。虽然我承认这是个人喜好。
3赞
Łukasz Kwieciński
5/10/2023
#2
您可以按照@mrxra建议使用正则表达式,但我认为这有点矫枉过正,只需使用以下方法:split()
images =['atr5500-ve-7.8.1 version=7.8.1 [Boot image]' ,
'atr5300-ve-3.4.4','atr5600-ve-7.6.6','atr5300-ve-3.4.4',
'atr2300-ve-8.7.8','atr1200-ve-1.2.2','atr5600-ve-3.2.2']
result = [
im.split(" ")[0] for im in images
]
评论
result = [s.split()[0] for s in images if s]