Python-写一个语句,如果文件中存在某个字符
问题描述:
我终于得到了帮助,并能够统计文件中有多少特定字符,我试着通过编写/打印一行来增强代码if在文件中有一个特定的字符,这是我想要做的那部分代码,没有给出错误,只是不起作用。关于解决这个问题的任何建议?Python-写一个语句,如果文件中存在某个字符
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]
答
您可以利用字典来提供您需要的话指的是获得原子(未经测试的例子)后查找信息:
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...
+0
谢谢!必须做一些修改,但工作完美! – octain 2014-09-23 18:30:00
答
你在这里工作有几个问题。
首先,正如其他人指出的那样,{}
是一个空字典,绝不会等于除另一个空字典以外的任何东西。花括号在字符串中的含义与代码中的不同。在一个字符串'Hello, {}'.format('World')
将做你所期望的,但在一个字符串之外,它代表一个字典数据类型。
其次,您的文件操作顺序不正确。您应该打开文件,读取其内容,然后关闭文件。
第三,你需要用某些东西来迭代文件内容,比如for循环。
你觉得呢'{}'呢? – 2014-09-22 18:30:53
我以为这是我在atom_count中设置的字符范围,假设我在那里不正确 – octain 2014-09-22 18:33:11
'{}'是一个空字典,所以它永远不会等于一个字符串。 – kindall 2014-09-22 18:38:07