擅长:python、mysql、java
<p>您可以扩展regex模式以包含化学变化,并在每个匹配中获得所需的内容。在要保留的图案部分周围加上括号,以便捕获它们。你知道吗</p>
<pre><code>pattern = '''{(\d\.H\d'?)}\s(\d\.\d+)\s'''
rex = re.compile(pattern)
</code></pre>
<p>迭代所有匹配项;name和shift将位于<a href="https://docs.python.org/3/library/re.html#re.match.groups" rel="nofollow noreferrer">match.groups()</a>元组中;如果尚未看到名称,则将其添加到字典中。你知道吗</p>
<pre><code>with open(filepath) as atom_name:
data = atom_name.read()
result = {}
for match in rex.finditer(data):
name, shift = match.groups()
#print(name,shift)
if name not in result:
result[name] = float(shift)
</code></pre>
<p>如果文件太大,无法一次读取,请一次提取一行信息。你知道吗</p>
<pre><code>with open(filepath) as atom_name:
for line in atom_name:
for match in rex.finditer(line):
name, shift = match.groups()
#print(name,shift)
if name not in result:
result[name] = float(shift)
</code></pre>