Python-如果文件中存在某个字符,则写一个语句

时间:2014-09-22 18:24:44

标签: python python-2.7 file-io

我终于得到了帮助,并且能够计算文件中有多少特定字符,我正在尝试通过编写/打印一行来增强代码,如果文件中有特定字符,则此处是代码的一部分我有这样做,假设没有给出错误,只是不起作用。有关处理此问题的任何建议吗?

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]

2 个答案:

答案 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循环。