Python-获取txt文件的一部分并将其放入另一个txt文件中

Python-获取txt文件的一部分并将其放入另一个txt文件中,python,regex,Python,Regex,我有一个具有以下语法的大文件: Object 1: [Useless Data] com_pos = number number number [Useless Data] Object 2: [Useless Data] com_pos = number, number, number [Useless Data] ... and so on (there's a very large number of objects.). 我想做的是选择数字并将它们放入另一个txt文件中,该文件具有特

我有一个具有以下语法的大文件:

Object 1:
[Useless Data]
com_pos = number number number
[Useless Data]

Object 2:
[Useless Data]
com_pos = number, number, number
[Useless Data]
...
and so on (there's a very large number of objects.).
我想做的是选择数字并将它们放入另一个txt文件中,该文件具有特定的格式,基本上每个对象有一行,每个数字有一列

问题是每个对象的com_pos=都相同。 我该怎么做?我应该使用正则表达式吗?

您必须为此编写某种解析器。如果不理解正则表达式,就不需要使用它们。例如,给出两个示例,这同样适用:

with open(path) as f:
    for line in f:
        columns = line.split()
        if columns[0] == 'com_pos' and columns[1] == '=':
            numbers = [float(column.rstrip(',')) for column in columns[2:]]
            # do something with numbers
使用正则表达式可以使事情更紧凑、更高效或更健壮。例如,考虑这一点:

r = re.compile(r'com_pos\s*=\s*(\d+),?\s*(\d+),?\s*(\d+)')
with open(path) as f:
    for line in f:
        m = r.search(line)
        if m:
            numbers = [float(group) for group in m.groups]
            # do something with numbers
这可能会运行得更快,而且它在面对变量输入时更加健壮—数据格式有时带有逗号,有时看起来不像是人类编写的文件…,如果您理解regexp,它会更简单。但如果你不这样做,它将更难维持


您可以使用以下选项:

with open ('first_file' ,'r') as f1 and open('second_file' ,'w') as f2 :
 for line in f1.readlines() :
    if 'com_pos' in line :
       f2.write(line.split('=')[1])

首先,您需要找到com_pos所在的行,然后可以使用=拆分该行,并写入第二个拆分的元素,即第二个文件中的数字

正则表达式是一个不错的选择,因为数字之间的分隔符总是相同的,还是可以变化?我问,因为对象1的数字用空格分隔,而对象2的数字用逗号分隔
with open ('first_file' ,'r') as f1 and open('second_file' ,'w') as f2 :
 for line in f1.readlines() :
    if 'com_pos' in line :
       f2.write(line.split('=')[1])