代码之家  ›  专栏  ›  技术社区  ›  MysteryGuy

如何在Python中读取字符串的一部分?

  •  1
  • MysteryGuy  · 技术社区  · 6 年前

    我有一个包含文件夹和文件的数据库。我设法读取文件并得到包含 montage 文字。。。

    montage = 0, FP1-F7: EEG FP1-REF -- EEG F7-REF
    montage = 1, F7-T3: EEG F7-REF -- EEG T3-REF
    montage = 2, T3-T5: EEG T3-REF -- EEG T5-REF
    montage = 3, T5-O1: EEG T5-REF -- EEG O1-REF

    现在,我想能够提取逗号和两点之间的内容(即。 FP1-F7 , F7-T3 但是我不知道怎么办?

    而且,为什么 print 命令显示行之间有一个“空格”(下面不显示,但实际显示)?

    2 回复  |  直到 6 年前
        1
  •  1
  •   GPhilo satyendra    6 年前

    获取所需的标记(注意:这适用于您提供的示例,如果在您显示的点之前还有其他逗号或冒号,则此操作不起作用):

    def parse_line(line):
      start = line.find(',')
      end = line.find(':')
      return line[start+1:end].strip()
    

    你也可以用regex来实现这一点,但对于这种情况,我认为这是过分了。

    然后,可以通过列表理解来获取令牌列表:

    tokens = [parse_line(l) for l in lines]
    

    哪里 lines 是要分析的行的列表(或者,如果从文本文件读取,则为文件对象本身)

        2
  •  0
  •   Rakesh    6 年前

    使用正则表达式。

    import re
    s = """montage = 0, FP1-F7: EEG FP1-REF --  EEG F7-REF
    montage = 1, F7-T3:  EEG F7-REF  --  EEG T3-REF
    montage = 2, T3-T5:  EEG T3-REF  --  EEG T5-REF
    montage = 3, T5-O1:  EEG T5-REF  --  EEG O1-REF """
    
    for i in s.splitlines():
        m = re.search(r",(.*?):", i)     #Get content between , and :
        if m:
            print(m.group(1).strip())
    

    输出:

    FP1-F7
    F7-T3
    T3-T5
    T5-O1