首页 > 解决方案 > Python 每次在 python 中出现换行符并操作这些部分时将文件拆分为部分的方法

问题描述

我有一个特定格式的纯文本文件,为了简单起见,让我们将顺序保持为姓名、年龄、爱好,然后是空格,这样就可以了。

name1
年龄 1
板球和国际象棋

name2
age2
板球、网球和曲棍球

等等等等它一直持续到说name1000

我正在尝试编写一个 python 程序,它可以将此文件转换为并将输出保存到一个新文件中,名称为
Hi name1。您的年龄为 1 岁。你喜欢板球和国际象棋
你好 name2。您的年龄为 2 岁。你喜欢板球、网球和曲棍球
等等

由于我无法做到这一点,我尝试对 2 个小样本进行此操作,我在它们之前添加了这些(姓名:,年龄:,爱好:)

姓名:姓名
1 年龄:age1
爱好:板球、国际象棋

姓名:name2
年龄:age2
爱好:板球、网球和曲棍球

而且我已经制作了下面的代码。但是无法正确执行,下面的代码只是另一个不成功的尝试。

import re
number = 1
doc = open('profiles.txt', 'r')

def combine(line):
  x = ''
  if re.search("^Name :", line): x = str((line.partition(':'))[2])
  elif re.search("^Age :", line): x = str((line.partition(':'))[2])
  elif re.search("^Hobbies :", line): x = str((line.partition(':'))[2])
  else : pass
  return x
 
for n in doc: 
    # with open('Result.txt', 'a') as file: file.write(str("{0}) Hi {1}. You are aged{1}. You like{1}".format(number,str(combine(n)))))
    print(str("{0}) Hi {1}. You are aged{1}. You like{1}".format(number,str(combine(n)))))
    number += 1

我曾尝试寻找答案,但也许我不知道正确措辞或其他什么。非常感谢任何帮助!

标签: python

解决方案


我认为这是一种更简单的方法(基于您建议的第二种文件格式):-

DEFAULT = {'Name': '', 'Age': '', 'Hobbies': ''}
with open('/Users/andy/profiles.txt') as p:
    d = dict(DEFAULT)
    for line in p:
        line = line.rstrip('\n').strip()
        if len(line) == 0:
            print(
                f'Hi {d["Name"]}. Your age is {d["Age"]}. You like {d["Hobbies"]}')
            d = dict(DEFAULT)
        else:
            t = line.split(':')
            if len(t) == 2:
                d[t[0].strip()] = t[1].strip()

推荐阅读