Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将文本文件转换为以空行作为唯一分隔符的字典_Python_Python 3.x_Dictionary_Text Files - Fatal编程技术网

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"
}