我正在尝试在以下字符串中找到一种方法来取出$ 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")
这似乎知道它存在,但不知道它存在于哪一个
答案 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