如果文件中有某个字符,Python将编写一条语句

如果文件中有某个字符,Python将编写一条语句,python,python-2.7,file-io,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(fil

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

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]

你在工作中遇到了几个问题


首先,正如其他人所指出的,
{}
是一个空字典,它永远不会等同于其他空字典。花括号在字符串中的含义与在代码中的含义不同。在字符串
'Hello,{}中,format('World')
将执行您期望的操作,但在字符串之外,它表示字典数据类型

其次,文件操作的顺序不正确。您应该打开该文件,读取其内容,然后关闭该文件


第三,您需要使用一些东西来迭代文件内容,例如for循环。

您在这里遇到了一些问题


首先,正如其他人所指出的,
{}
是一个空字典,它永远不会等同于其他空字典。花括号在字符串中的含义与在代码中的含义不同。在字符串
'Hello,{}中,format('World')
将执行您期望的操作,但在字符串之外,它表示字典数据类型

其次,文件操作的顺序不正确。您应该打开该文件,读取其内容,然后关闭该文件


第三,您需要使用一些东西来迭代文件内容,例如for循环。

您在这里遇到了一些问题


首先,正如其他人所指出的,
{}
是一个空字典,它永远不会等同于其他空字典。花括号在字符串中的含义与在代码中的含义不同。在字符串
'Hello,{}中,format('World')
将执行您期望的操作,但在字符串之外,它表示字典数据类型

其次,文件操作的顺序不正确。您应该打开该文件,读取其内容,然后关闭该文件


第三,您需要使用一些东西来迭代文件内容,例如for循环。

您在这里遇到了一些问题


首先,正如其他人所指出的,
{}
是一个空字典,它永远不会等同于其他空字典。花括号在字符串中的含义与在代码中的含义不同。在字符串
'Hello,{}中,format('World')
将执行您期望的操作,但在字符串之外,它表示字典数据类型

其次,文件操作的顺序不正确。您应该打开该文件,读取其内容,然后关闭该文件


第三,您需要使用某种东西(例如for循环)迭代文件内容。

您可以使用字典提供所需的查找信息,然后在获得原子后参考该信息(未测试的示例):


您可以使用字典提供所需的查找信息,然后在获取原子后参考该信息(未经测试的示例):


您可以使用字典提供所需的查找信息,然后在获取原子后参考该信息(未经测试的示例):


您可以使用字典提供所需的查找信息,然后在获取原子后参考该信息(未经测试的示例):



你认为
{}
有什么作用?我认为这是我在atom_count中设置的字符范围,假设我不正确,
{}
是一个空字典,所以它永远不会等于字符串。我如何在字典中声明4个变量?像这样的事情可能是:a={OHNC},然后像这样做:对于filname中的行:那么有if语句吗?有没有其他方法可以使用上面的itertools.chain方法来简化文件?为什么要使用itertools.chain?如果'H'/'O'/'N'/'C'在当前行中,难道你不想写出一个字符串吗?你认为
{}
的作用是什么?我认为这是我在atom_count中设置的字符范围,假设我不正确,
{}
是一个空字典,所以它永远不会等于字符串。我如何在字典中声明这4个变量?像这样的事情可能是:a={OHNC},然后像这样做:对于filname中的行:那么有if语句吗?有没有其他方法可以使用上面的itertools.chain方法来简化文件?为什么要使用itertools.chain?如果'H'/'O'/'N'/'C'在当前行中,难道你不想写出一个字符串吗?你认为
{}
的作用是什么?我认为这是我在atom_count中设置的字符范围,假设我不正确,
{}
是一个空字典,所以它永远不会等于字符串。我如何在字典中声明这4个变量?像这样的事情可能是:a={OHNC},然后像这样做:对于filname中的行:那么有if语句吗?有没有其他方法可以使用上面的itertools.chain方法来简化文件?为什么要使用itertools.chain?如果'H'/'O'/'N'/'C'在当前行中,难道你不想写出一个字符串吗?你认为
{}
的作用是什么?我认为这是我在atom_count中设置的字符范围,假设我不正确,
{}
是一个空字典,所以它永远不会等于字符串。我如何在字典中声明这4个变量?像这样的事情可能是:a={OHNC},然后像这样做:对于filname中的行:那么有if语句吗?有没有其他方法可以使用上面的itertools.chain方法来简化文件?为什么要使用itertools.chain?如果“H”/“O”/“N”/“C”在当前行中,您不想写出一个字符串吗?谢谢!不得不做一些修改,但效果很好
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...