在Python中多次拆分字符串

时间:2014-01-06 14:19:45

标签: python regex split

这应该是一件简单的事情,但我无法让它发挥作用。

说我有这个字符串。

I want this string to be splitted into smaller strings.

而且,好吧,我想将它拆分成更小的字符串,但只取T和S之间的内容。

所以,结果应该产生

this, to be s, to s, trings

到目前为止,我已尝试拆分每一个S,然后是每个T(向后)。但是,它只会获得第一个“这个”,并停止。如何让它继续并获得T和S之间的所有东西?

(在此程序中,我将结果导出到另一个文本文件)

matches = open('string.txt', 'r')

with open ('test.txt', 'a') as file:    
    for line in matches:
           test = line.split("S")
           file.write(test[0].split("T")[-1] + "\n")

matches.close()

也许使用正则表达式会更好,虽然我不知道如何使用它们太好了?

1 个答案:

答案 0 :(得分:3)

您想要re.findall()来电:

re.findall(r't[^s]*s', line, flags=re.I)

演示:

>>> import re
>>> sample = 'I want this string to be splitted into smaller strings.'
>>> re.findall(r't[^s]*s', sample, flags=re.I)
['t this', 'tring to be s', 'tted into s', 'trings']

请注意,这与't this''tted into s'匹配;当t 时,您的规则需要澄清为什么那些首先'trings'个字符不匹配。

听起来,好像您只想匹配ts之间的文字而不包含任何其他t

>>> re.findall(r't[^ts]*s', sample, flags=re.I)
['this', 'to be s', 'to s', 'trings']

第二个结果中的tring和第三个结果中的tted in不包含在内,因为这些结果中有t个。{/ p>