在列表中查找包含特定字符的第一个元素

时间:2019-06-22 02:47:19

标签: python

我正在尝试在以下字符串中找到一种方法来取出$ 30K,而我始终希望第一次出现$(美元符号),但要带来全部价值

text = 'My 82 Benchmark $30K 1000m S7 $23'

text_string = (text.split()) 
text_string

输出= ['My', '82', 'Benchmark', '$30K', '1000m', 'S7', '$23']

我已经尝试过此代码

for i in text_string: 
    if('$' in i) : 
        print ("Element Exists") 

这似乎知道它存在,但不知道它存在于哪一个

5 个答案:

答案 0 :(得分:2)

通过使用re模块,您可以轻松获得想要的东西

import re

要获得第一次出现,您可以执行以下操作:

m = re.search('([$][0-9]+K?)', text)
print(m.group(0))

如果您希望所有出现的事情都可以做到:

re.findall('([$][0-9]+K?)', text)

获取所有匹配项的列表。希望对您有所帮助。

答案 1 :(得分:0)

您已正确完成所有操作,只需要打印变量即可。
如果只需要第一个值,则可以使用break来逃避循环。
一旦达到所需值,就会停止循环。

此代码已固定并打印$ 30。

text = 'My 82 Benchmark $30K 1000m S7 $23'

text_string = text.split()

print(text_string)
for i in text_string: 
    if '$' in i: 
        print(i) 
        break

我还删除了代码中的多余括号,并在打印和打开(

更新

我还将尝试在这里的一个小小的答案中解释汤姆·卡兹斯的话。

Tom Karzes说使用清单理解。要列出理解,代码是

strings = [s for s in text_string if '$' in s]
if len(strings) > 0:
    print(strings[0])

列表理解是创建列表的快速方法。在这里,您将遍历text_string列表中的所有字符串,并仅收集其中包含$字符的字符串(请参阅if '$' in s)。
这样,您将获得一个字符串列表,其中所有字符串中都有一个$字符。现在,您可以使用len检查大小是否大于0,然后首先打印字符串列表中的项目。

答案 2 :(得分:0)

您可以先分割“ $”,然后再分割空格:

"$"+text.split("$",1)[1].split()[0] 

答案 3 :(得分:0)

如果只需要第一个带有$符号的元素,则可以简单地跳出循环。

text = 'My 82 Benchmark $30K 1000m S7 $23'
text_string = text.split()
print(text_string)
for i in text_string: 
if '$' in i: 
    print(i) 
    break

答案 4 :(得分:0)

列表理解有点过分,请使用生成器:

next((x for x in text.split() if '$' in x), '')

在代码中

text = 'My 82 Benchmark $30K 1000m S7 $23'

print(next((x for x in text.split() if '$' in x), ''))
# 30K