Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python在提取零件后删除特定字符_Python - Fatal编程技术网

如何使用python在提取零件后删除特定字符

如何使用python在提取零件后删除特定字符,python,Python,我有一个文本文件,如下所示: . . . ----------------------- first ATOMIC CHARGES ----------------------- 0 C : -0.157853 1 C : -0.156875 2 C : -0.143714 3 C : -0.140489 4 S : 0.058926 5 H : 0.128758 6 H : 0.128814 7 H : 0

我有一个文本文件,如下所示:

.
.
.
-----------------------
first ATOMIC CHARGES
-----------------------
   0 C :   -0.157853
   1 C :   -0.156875
   2 C :   -0.143714
   3 C :   -0.140489
   4 S :    0.058926
   5 H :    0.128758
   6 H :    0.128814
   7 H :    0.142420
   8 H :    0.140013
My charges :   -0.0000000

------------------------
.
..
.
为了提取特定部分,我在下面使用了这个脚本

with open('FILE.txt', 'rb') as f:
     textfile_temp = f.read()

     print textfile_temp.split('first ATOMIC CHARGES')[1].split("My charges :   -0.0000000")[0]
我的输出是:

-----------------------
   0 C :   -0.157853
   1 C :   -0.156875
   2 C :   -0.143714
   3 C :   -0.140489
   4 S :    0.058926
   5 H :    0.128758
   6 H :    0.128814
   7 H :    0.142420
   8 H :    0.140013
我的目标是删除“--------------------------”字符,我的输出如下:

   0 C :   -0.157853
   1 C :   -0.156875
   2 C :   -0.143714
   3 C :   -0.140489
   4 S :    0.058926
   5 H :    0.128758
   6 H :    0.128814
   7 H :    0.142420
   8 H :    0.140013

要删除该行,请尝试:

stringy = stringy.replace("--", "").strip() # assuming an even number of dashes
这将消除所有多余的破折号和换行符

或者,您可以将stringy分解为一系列行,然后使用

stringy = '\n'.join(stringy.splitlines()[1:])
或暴力:

stringy = stringy.replace('-----------------------\n', '')
或者只是改变一下:

print textfile_temp.split('first ATOMIC CHARGES')[1].split("My charges :   -0.0000000")[0]

使用三元组'

with open('data.txt', 'r') as f:
    textfile_temp = f.read()

    print(textfile_temp.split('''first ATOMIC CHARGES
-----------------------''')[1].split('My charges :   -0.0000000')[0])

@Hamza allal在这个最简单的示例中,您可以从文件数据中找到两个索引

  • 第一次出现
    0
    编号
  • “我的费用”字符串的索引
  • zero\u ind=file\u data.find(“0”)

    str\u ind=file\u data.find(“我的费用”,零\u ind)

    文件数据[zero\u ind:str\u ind].split(“\n”)


    然后,只需使用“\n”分割文件数据,即可获得所需的所有项目。

    是否需要一个包含换行符的字符串,或者字符串列表是否适合您?您好,我可以将此行放在哪里,而不只是打印split()命令的输出,而是将输出保存到变量中。然后按照上面的方法处理变量,然后打印变量。好的,我只是修改了答案以显示简单的方式。如果我的答案解决了您的问题,请选择它作为正确答案。快乐编码!我很高兴,非常感谢…一个非常简单有效的方法。一个非常有趣的方法,谢谢。“正确的结果”
    with open('data.txt', 'r') as f:
        textfile_temp = f.read()
    
        print(textfile_temp.split('''first ATOMIC CHARGES
    -----------------------''')[1].split('My charges :   -0.0000000')[0])