在某个序列的第n和第m次出现之间获取子字符串

时间:2014-08-18 13:27:10

标签: python

我想搜索一个我知道包含特定字符序列的几个出现的字符串,并检索这些出现的两个特定字符串之间的编号。或者优选地,从末尾开始编号。我也希望尽可能紧凑,因为它进入列表理解。

我们说我有以下字符串:

s = "foofoo\tBergen, Norway\tAffluent\tDonkey"

我想检索位于"\t"的最后一次出现和倒数第二次出现之间的s的子串。

所以在这个例子中:"Affluent"

这是我目前正在使用的理解(没有修剪字符串):

data = [(entries[i], entries[i+1]) for i in range(0, len(entries), 3)]

对于我想修剪的数据的每个条目,它都是字符串entries[i]

3 个答案:

答案 0 :(得分:1)

Rsplit用于从右侧分割单词

a="foofoo\tBergen, Norway\tAffluent\tDonkey"

word= a.rsplit('\t',2)
if len(word)>2:
     print word[-2]

#output =Affluent

答案 1 :(得分:0)

您可以通过字符序列split字符串,并join一起(使用您的字符序列作为连接字符串)所需的匹配项。

更新 :对于引用的示例:

"\t".join(s.split("\t")[-2:-1])

答案 2 :(得分:0)

假设您的字符串的开头被视为第62个分隔符号:

def concat_strings(strs):
    result = ""
    for substr in strs:
        result = result + substr
    return result

def find_section(s, delim, n, m):
    tokens = s.split(delim)
    return concat_strings(tokens[n:m])