我终于得到了帮助,并且能够计算文件中有多少特定字符,我正在尝试通过编写/打印一行来增强代码,如果文件中有特定字符,则此处是代码的一部分我有这样做,假设没有给出错误,只是不起作用。有关处理此问题的任何建议吗?
atom_count = len(set('OHCN').intersection(chain.from_iterable(f1)))
s = s.replace('ntyp = 11', 'ntyp = {}'.format(atom_count))
f = open(filename, 'w')
f.write(s)
f.flush()
f.close()
linenum = f.readLines()
if {} == 'H':
f.write('Hydrogen') + linenum[22]
elif {} == 'C':
f.write('Carbon') + linenum[23]
elif {} == 'N':
f.write('Nitrogen') + linenum[24]
elif {} == 'O':
f.write('oxygen') + linenum[25]
答案 0 :(得分:2)
您可以利用字典提供所需的查找信息,然后在获取原子后参考(未经测试的示例):
atom_lookup = {
'H': ('Hydrogen', 22),
'C': ('Carbon', 23),
# etc....
}
with open('ohcn_file') as f1, open('other_file') as f2:
atoms_present = atom_lookup.viewkeys() & chain.from_iterable(f1)
f2_lines = list(f2)
for atom in atoms_present:
atom_name, atom_lineno = atom_lookup[atom]
atom_line = f2_lines[atom_lineno]
# do something with atom_name and atom_line...
答案 1 :(得分:1)
你在这里有几个问题。
首先,正如其他人所指出的,{}
是一个空字典,除了另一个空字典外永远不会等于任何东西。曲线括号在字符串中的含义与在代码中的含义不同。在字符串'Hello, {}'.format('World')
中将执行您期望的操作,但在字符串之外,它表示字典数据类型。
其次,文件操作的顺序不正确。您应该打开文件,阅读其内容,然后关闭文件。
第三,您需要使用某些内容迭代文件内容,例如for循环。