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

2024-04-29 08:05:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含文件夹和文件的数据库。我设法读取文件并获得包含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-F7F7-T3,…),但我不知道怎么做

此外,为什么print命令显示的行之间有一个“空格”(下面没有显示,但是是实数)


Tags: 文件文件夹ref数据库单词t3逗号eeg
2条回答

使用正则表达式

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

获取您想要的令牌(注意:这适用于您提供的示例,如果在您显示的点之前有其他逗号或冒号,这将不起作用):

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是要解析的行列表(或者,如果您是从文本文件中读取,则是file对象本身)

相关问题 更多 >