Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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:在文本文件中找到一个字符串,如果整数在同一行中,则打印它>;1._Python - Fatal编程技术网

Python:在文本文件中找到一个字符串,如果整数在同一行中,则打印它>;1.

Python:在文本文件中找到一个字符串,如果整数在同一行中,则打印它>;1.,python,Python,我需要编写一个脚本,检查一个文件的eeg通道阻抗是否高于1,并在屏幕上返回这些通道名称。我不知道怎么做,因为频道名称也有一个整数 文本文件中通道和整数的格式示例 Fp1: 4 Fp2: 1 F7: 0 def read_text(in_file): f = open(in_file,'r') line = f.readlines() f.close() channel = ['Fp1:', 'Fp2:',

我需要编写一个脚本,检查一个文件的eeg通道阻抗是否高于1,并在屏幕上返回这些通道名称。我不知道怎么做,因为频道名称也有一个整数

文本文件中通道和整数的格式示例

Fp1:          4
Fp2:          1
F7:           0
def read_text(in_file):
    f = open(in_file,'r')
    line = f.readlines()
    f.close()
    channel = ['Fp1:', 'Fp2:', 'F7:', 'F3:', 'Fz:', 'F4:', 'F8:', 'FC5:', 'FC1:', 
          'FC2:', 'FC6:', 'T7:', 'C3:', 'Cz:', 'C4:', 'T8:', 'VEOG:', 'CP5:', 
          'CP1:', 'CP2:', 'CP6:', 'AFz:', 'P7:', 'P3:', 'Pz:', 'P4:', 'P8:', 
          'PO9:', 'O1:', 'Oz:', 'O2:', 'PO10:', 'AF7:', 'AF3:', 'AF4:', 'AF8:', 
          'F5:', 'F1:', 'F2:', 'F6:', 'FT7:', 'FC3:', 'FC4:', 'FT8:', 'C5:', 
          'C1:', 'C2:', 'C6:', 'TP7:', 'CP3:', 'CPz:', 'CP4:', 'TP8:', 'P5:', 
          'P1:', 'P2:', 'P6:', 'PO7:', 'PO3:', 'POz:', 'PO4:', 'PO8:', 'Gnd:', 
          'Ref:']
    for x in channel: 
        ??????


    return()
在我的代码中,我创建了一个通道列表,并在eeg通道后使用分号,因为它是唯一用文本文件其余部分的阻抗值定义通道的东西

Fp1:          4
Fp2:          1
F7:           0
def read_text(in_file):
    f = open(in_file,'r')
    line = f.readlines()
    f.close()
    channel = ['Fp1:', 'Fp2:', 'F7:', 'F3:', 'Fz:', 'F4:', 'F8:', 'FC5:', 'FC1:', 
          'FC2:', 'FC6:', 'T7:', 'C3:', 'Cz:', 'C4:', 'T8:', 'VEOG:', 'CP5:', 
          'CP1:', 'CP2:', 'CP6:', 'AFz:', 'P7:', 'P3:', 'Pz:', 'P4:', 'P8:', 
          'PO9:', 'O1:', 'Oz:', 'O2:', 'PO10:', 'AF7:', 'AF3:', 'AF4:', 'AF8:', 
          'F5:', 'F1:', 'F2:', 'F6:', 'FT7:', 'FC3:', 'FC4:', 'FT8:', 'C5:', 
          'C1:', 'C2:', 'C6:', 'TP7:', 'CP3:', 'CPz:', 'CP4:', 'TP8:', 'P5:', 
          'P1:', 'P2:', 'P6:', 'PO7:', 'PO3:', 'POz:', 'PO4:', 'PO8:', 'Gnd:', 
          'Ref:']
    for x in channel: 
        ??????


    return()

您的文件如何分隔条目,是每行一个条目还是逗号分隔

例如,如果您每行有一个条目,例如

Fp1:          4
Fp2:          0
F7:           10
您可以查看这些行,并将其拆分为:

with open(filename, "r") as f:
    for line in f:
        channel, value = line.split(":")  # would create a list ["Fp1", "4"]
        if int(value) > 1:
            print(channel)
            # do something else with channel

>> Fp1
>> F7

在本例中,它将同时打印Fp1和F7,但不打印Fp2。我不知道我是否完全理解您的要求,但是,如果您想读取“F1:4”行,然后存储它,您可以使用dict

比如:

如果您想要一个“漂亮”的输出,您可以这样做,而不是“打印数据”:

for key in data.keys():
    print str(key) + " -> " + str(data[key])

此外,如果您不想显示“:”字符,可以将“line.split()”更改为“line.split(:”),然后将“.strip()”添加到“s[1]”中。

最好再准备一些数据文件格式,而不是只在单个大数据块中读取它。一些
split
s可能会使它更易于管理。这样做的同时,您可能也会了解如何继续。对于您感兴趣的行,行是否以频道和冒号开头?@ChrisDoyle是的,行以频道和冒号开头。