我有一个数据库,其中包含带有文件的文件夹。我设法读取文件并获得包含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
,...),但我不知道该怎么做?< / p>
此外,为什么print
命令显示的行之间有一个“空格”(以下未显示,但为实数)?
答案 0 :(得分:1)
获取所需的令牌(注意:这可以与您提供的示例一起使用,如果显示的点之前还有其他逗号或冒号,则将无效):
def parse_line(line):
start = line.find(',')
end = line.find(':')
return line[start+1:end].strip()
您也可以使用正则表达式来执行此操作,但是对于这种情况,IMO可能会显得过大。
然后可以通过列表理解来获取令牌列表:
tokens = [parse_line(l) for l in lines]
其中lines
是要分析的行的列表(或者,如果从文本文件中读取,则为文件对象本身)
答案 1 :(得分:0)
使用正则表达式。
.setMaster("yarn-client") \
.set("spark.executor.instances","10") \
.set("spark.executor.cores","4") \
.set("spark.executor.memory","10g") \
.set("spark.driver.memory","8g") \
.set("spark.yarn.executor.memoryOverhead","1200") \
.set("spark.sql.pivotMaxValues", "6000") \
.set("spark.sql.inMemoryColumnarStorage.batchSize", "1000")
输出:
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())