Python 将文本文件转换为以空行作为唯一分隔符的字典
您好,我正在尝试将文本文件转换为字典,但我的分隔符是空行。因此,我的Python 将文本文件转换为以空行作为唯一分隔符的字典,python,python-3.x,dictionary,text-files,Python,Python 3.x,Dictionary,Text Files,您好,我正在尝试将文本文件转换为字典,但我的分隔符是空行。因此,我的dummy.txt数据的一部分示例如下所示: Lorem ipsum dolor sit amet (consectetur adipiscing elit) 2020-01-05 20:01:02 Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem
dummy.txt
数据的一部分示例如下所示:
Lorem ipsum dolor sit amet (consectetur adipiscing elit)
2020-01-05 20:01:02
Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet
Lorem ipsum dolor
2019-01-30 12:21:50
Lorem ipsum Lorem ipsum
Lorem ipsum Lorem ipsum
Lorem ipsum Lorem ipsum Lorem
因此,基本上它以一个名称(有时包括括号)开始,然后是日期和时间(按照上面的格式),然后是任何附加信息(可以是任意长度或行数,但包含“/”和“,”等符号)。最后,它将是一个空行,表示第一组数据的结束
因此,我需要它以字典的形式呈现如下:
{'Lorem ipsum dolor sit amet (consectetur adipiscing elit)':'2020-01-05 20:01:02 Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet','Lorem ipsum dolor':'2019-01-30 12:21:50 Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem'}
我尝试过使用这样的代码,因为除了“\n”之外,我想不出任何其他表示空行分隔符的代码,但我知道它是错误的,因为\n
也会影响同一集中的其他数据:
d = {}
with open("dummy.txt") as f:
for line in f:
(key, val) = line.split('\n')
d[key] = val
print (d)
任何帮助都将不胜感激!提前感谢您您就快到了,您需要将整个文件拆分为两行换行符,然后键是该组中的第一行,val是所有其他行
d = {}
with open("dummy.txt") as f:
for group in f.read().split('\n\n'):
key, *val = group.split('\n')
d[key] = ' '.join(val)
print (d)
结果:
{'Lorem ipsum dolor sit amet (consectetur adipiscing elit)': '2020-01-05 20:01:02 Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet',
'Lorem ipsum dolor': '2019-01-30 12:21:50 Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem'}
就快到了,你需要把整个文件分成两行换行符,然后键是该组中的第一行,val是所有其他行
d = {}
with open("dummy.txt") as f:
for group in f.read().split('\n\n'):
key, *val = group.split('\n')
d[key] = ' '.join(val)
print (d)
结果:
{'Lorem ipsum dolor sit amet (consectetur adipiscing elit)': '2020-01-05 20:01:02 Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet',
'Lorem ipsum dolor': '2019-01-30 12:21:50 Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem'}
您需要按
\n\n
拆分数据(文件流),然后按\n
拆分每个项目。根据数据的结构,项目中的第一行是键,其余的行用空格连接起来
一些指针
- 直截了当
- 即使默认值为
r
- 使用
代替dict()
以避免与{}
集合混淆
- 避免在带有open的
块中编写一堆代码。获取数据并关闭文件流
是获取“列表中的其余项目”的一种好方法[start=0:stop=end:step=1]
- 使用
打印带有数据的漂亮消息(json.dumps
,indent
)排序\u键
导入json
d=dict()
以open(“dummy.txt”、“r”)作为f:
data=f.read()
items=data.split(“\n\n”)
对于项目中的项目:
项目行=项目分割(“\n”)
d[项目行[0]]=“”。加入(项目行[1:])
打印(json.dumps(d,缩进=2,排序键=True))
输出
{
"Lorem ipsum dolor": "2019-01-30 12:21:50 Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem",
"Lorem ipsum dolor sit amet (consectetur adipiscing elit)": "2020-01-05 20:01:02 Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet"
}
您需要按
\n\n
拆分数据(文件流),然后按\n
拆分每个项目。根据数据的结构,项目中的第一行是键,其余的行用空格连接起来
一些指针
- 直截了当
- 即使默认值为
r
- 使用
代替dict()
以避免与{}
集合混淆
- 避免在带有open的
块中编写一堆代码。获取数据并关闭文件流
是获取“列表中的其余项目”的一种好方法[start=0:stop=end:step=1]
- 使用
打印带有数据的漂亮消息(json.dumps
,indent
)排序\u键
导入json
d=dict()
以open(“dummy.txt”、“r”)作为f:
data=f.read()
items=data.split(“\n\n”)
对于项目中的项目:
项目行=项目分割(“\n”)
d[项目行[0]]=“”。加入(项目行[1:])
打印(json.dumps(d,缩进=2,排序键=True))
输出
{
"Lorem ipsum dolor": "2019-01-30 12:21:50 Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem",
"Lorem ipsum dolor sit amet (consectetur adipiscing elit)": "2020-01-05 20:01:02 Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet"
}