我如何在复杂的文本文件中通过用户输入获取特定数据并转换为csv?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何在复杂的文本文件中通过用户输入获取特定数据并转换为csv?相关的知识,希望对你有一定的参考价值。

我有一个名为ss_out的复杂文本格式输出文件(就像下面的示例一样,我想在文件中获取两个“ xxx”数据之间的内容并另存为csv。当我的代码运行时,它需要数据,但是我必须在开始和结束处写“ xxx”。我该如何在不输入任何内容的情况下通过用户输入获取数据?这是我所拥有的。

ss_out DATA
      values
xxx
xxx
    2.1700E-08   0.00000E+00 0.0000
    2.6100E-07   4.00651E-13 0.5939
    3.8800E-05   6.18213E-08 0.0026
    1.0600E-04   1.43980E-07 0.0017
xxx
total

import pandas as pd
import os

with open('ss_out.txt','r') as file:
    ac =''
    start= 0
    counter= 1
    for x in file.read().split('
'):
        if (x == 'xxx'):
            if (start== 1):
                with open(str(counter) + '.csv','w') as acd:
                    acd.write(ac)
                    acd.close()
                    ac =''
                    counter += 1
            else:
                start= 1   
        else:
            ac = ac + '
' + x
    file.close()
    df = pd.read_csv('2.csv', header=None)
    df.rename(columns={0: 'Energy,    Cross,     Value'}, inplace=True)
    df.to_csv('DATA_FILE.csv', index=False)
    os.remove('1.csv')
    os.remove('2.csv')
    print('
 Done! 
')
答案

这是我第一次回答问题,但可以解决。

假设您只有一组xxx ... xxx,则可以使用正则表达式。这是一个例子:

input = '''
start
xxx
line 1
line 2
line 3
xxx
end
'''

import re
expr = re.compile('xxx(.*)xxx',re.DOTALL)
match = expr.search(input)
result = '' if match == None else match.group(1)
with open('output.txt','w') as file:
    file.write(result)

或根据您的问题,如果输入存储在文本文件中,则应首先以字符串形式读取文本文件:

with open('ss_out.txt','r') as file:
    input = file.read()

import re
expr = re.compile('xxx(.*)xxx',re.DOTALL)
match = expr.search(input)
result = '' if match == None else match.group(1)
with open('output.txt','w') as file:
    file.write(result)

以上是关于我如何在复杂的文本文件中通过用户输入获取特定数据并转换为csv?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 查询以在 iOS swift 中通过用户 ID 获取特定用户

Android 中通过Java代码动态生成EditText视图,并循环遍历EditText取出遍历的ID和文本框的值

在 JAVA 中通过身份验证后如何获取 okta 用户详细信息/当前会话

如何在IOS APP中通过swift/javascript登录网站

在 pdf 文件中查找特定文本并使用文本打印文件名和行

在 Laravel 中通过用户 ID 强制注销特定用户