python - 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
我曾尝试寻找答案,但也许我不知道正确措辞或其他什么。非常感谢任何帮助!
解决方案
我认为这是一种更简单的方法(基于您建议的第二种文件格式):-
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()
推荐阅读
- html - CSS和元素的高度
- bigcommerce - PrintInvoice 全局变量 - BigCommerce
- javascript - 导入语句如何在没有指定导入语句中的路径信息的情况下做出反应,因为模块导入不能有裸路径
- javascript - 文本框不会改变javascript中的颜色
- xcode - 当我进入一个新的 viewController 时打开两次
- ruby-on-rails - ActiveRecord 通过两个关联加入
- bash - 为什么 ls -lSh 命令返回非常小的文件大小?
- c++ - 查找地图 C++ 中出现的次数
- javascript - 在javascript中“或”布尔值列表的最短方法
- html - 为什么按钮边框不会比#f0f0f0 更亮?