Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中读取字符串的一部分?_Python_File - Fatal编程技术网

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

如何在Python中读取字符串的一部分?,python,file,Python,File,我有一个包含文件夹和文件的数据库。我设法读取文件并获得包含montage单词的特定行 montage=0,FP1-F7:EEG FP1-REF——EEG F7-REF 蒙太奇=1,F7-T3:EEG F7-REF——EEG T3-REF 蒙太奇=2,T3-T5:EEG T3-REF——EEG T5-REF 蒙太奇=3,T5-O1:EEG T5-REF——EEG O1-REF 现在,我想能够提取逗号和双点之间的内容(即,FP1-F7,F7-T3,…),但我不知道怎么做 此外,为什么打印命令会在两行

我有一个包含文件夹和文件的数据库。我设法读取文件并获得包含
montage
单词的特定行

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

现在,我想能够提取逗号和双点之间的内容(即,
FP1-F7
F7-T3
,…),但我不知道怎么做

此外,为什么
打印
命令会在两行之间显示一个“空格”(下面没有显示,而是实数)?

使用Regex

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

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

您也可以使用regex来实现这一点,但对于这种情况,IMO认为这是过度杀戮

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

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

其中,
是要分析的行列表(或者,如果您从文本文件中读取,则文件对象本身)

打印
默认情况下会在末尾追加一个新行,如果字符串中有一个
\n
,则在打印的行之后会有一个空行。我接受这一行,因为它比使用正则表达式更直观;谢谢@GPhilo,这很有帮助
tokens = [parse_line(l) for l in lines]