python:切片字符串,从子字符串start+;n、 然后使用该值计算新子字符串的长度

python:切片字符串,从子字符串start+;n、 然后使用该值计算新子字符串的长度,python,string,substring,Python,String,Substring,我正在尝试读取文件内容,查找特定字符串,然后将以下2个字符(十六进制格式的整数)读取为x,然后将子字符串读取以下长度字符串x 示例:如果文件内容如下: 1390145993ASDF06452048091938HFDJGK39857719ASDF0313958293822352352352352335235235DHFGAJDGFASDF10323592378590725907230646246346734735746845698 查找ASDF 阅读下面2个字符(06)。所以我们需要6个十六进制值

我正在尝试读取文件内容,查找特定字符串,然后将以下2个字符(十六进制格式的整数)读取为
x
,然后将
子字符串
读取以下长度字符串
x

示例:如果文件内容如下:

1390145993ASDF06452048091938HFDJGK39857719ASDF0313958293822352352352352335235235DHFGAJDGFASDF10323592378590725907230646246346734735746845698

  • 查找
    ASDF
  • 阅读下面2个字符(06)。所以我们需要6个十六进制值
  • 读取接下来的6个十六进制值
    452048091938
  • 因此,所需的字符串是
    ASDF06452048091938
  • 继续,直到文件结束
  • 所需输出为:

    location=1
    
    while True:
    
        location=file.find('ASDF', location+1)
    
    if location==-1:
    
        break
    
    print file[location:]
    
  • ASDF06452048091938
  • ASDF03139582
  • asdf103235923785907230646246346734
  • 到目前为止,我已经尝试过:

    location=1
    
    while True:
    
        location=file.find('ASDF', location+1)
    
    if location==-1:
    
        break
    
    print file[location:]
    

    切下你想要的长度。将其强制转换为int,然后分割子字符串

    location = 0
    
    while True:
        location=file.find('ASDF', location+1)
        if location == -1:
            break
        length = int(file[location+4:location+6], 16)
        print file[location:location+6+length*2]
    
    输出:

    ASDF06452048091938
    ASDF03139582
    ASDF1032359237859072306462
    

    我投票决定重新讨论这个问题。由于不清楚海报上所问的是什么,这封信被关闭了。问题很清楚。投票的人没有仔细阅读问题。由于问题已结束,我的解决方案如下:编辑问题以避免进一步混淆。我想现在已经足够清楚了。它是十六进制的,所以
    int(file[location+4:location+6],16)
    …如果字符串以ASDF开头,那么
    location=0