如何在python中只打印字符串中的某些单词? 假设我想只打印第三个单词(这是一个数字)和第十个单词
虽然每次文本长度可能不同
mystring = "You have 15 new messages and the size is 32000"
感谢。
答案 0 :(得分:8)
mystring = "You have 15 new messages and the size is 32000"
parts = mystring.split(' ')
message_count = int(parts[2])
message_size = int(parts[9])
答案 1 :(得分:4)
看起来您正在匹配程序输出或日志文件中的内容。
在这种情况下,你想要足够匹配,这样你就可以确信你匹配的是正确的东西,但不是很多,如果输出稍微改变你的程序出错了。
正则表达式在这种情况下运作良好,例如
>>> import re
>>> mystring = "You have 15 new messages and the size is 32000"
>>> match = re.search(r"(\d+).*?messages.*?size.*?(\d+)", mystring)
>>> if not match: print "log line didn't match"
...
>>> messages, size = map(int, match.groups())
>>> messages
15
>>> size
32000
答案 2 :(得分:4)
mystring =“你有15条新消息 并且大小是32000“
print mystring.split(“”)[2] #prints 第三个字
print mystring.split(“”)[9] #prints 第十个字
答案 3 :(得分:2)
这个功能可以解决问题:
def giveme(s, words=()):
lista = s.split()
return [lista[item-1] for item in words]
mystring = "You have 15 new messages and the size is 32000"
position = (3, 10)
print giveme(mystring, position)
it prints -> ['15', '32000']
Ignacio指出的替代方案非常干净:
import operator
mystring = "You have 15 new messages and the size is 32000"
position = (2, 9)
lista = mystring.split()
f = operator.itemgetter(*position)
print f(lista)
it prints -> ['15', '32000']
operator.itemgetter()
...
返回一个可提取的可调用对象 来自其操作数的给定项目。
之后,
f = itemgetter(2)
,来电f(r)
返回r [2]。之后,
g = itemgetter(2,5,3)
,来电g(r)
返回(r [2],r [5],r [3])
请注意,现在位置中的位置应从0开始计算,以允许直接使用* position参数
答案 4 :(得分:0)
看看str.split()
。
或者,如果您正在寻找某些事情,您可以尝试使用正则表达式;这甚至可以应对填充词的变化。但是如果你关心的只是字符串中的单词位置,那么拆分和打印结果列表中的某些元素将是最直接的。
答案 5 :(得分:0)
这个怎么样:
import re
tst_str = "You have 15 new messages and the size is 32000"
items = re.findall(r" *\d+ *",tst_str)
for item in items:
print(item)
结果:
15
32000