在python中从字符串中打印一个单词

时间:2010-05-15 18:02:04

标签: python string split printing

如何在python中只打印字符串中的某些单词? 假设我想只打印第三个单词(这是一个数字)和第十个单词

虽然每次文本长度可能不同

mystring = "You have 15 new messages and the size is 32000"

感谢。

6 个答案:

答案 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