在包含大量信息的文本中为日期添加字符

2024-04-28 04:39:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文本文件,上面有日期、姓名和地址,比如: 190524 David Bakerstreet 190515 Peter Hollandstreet等

我想用{“准确地”和“:准确地”处理日期,使之适合词典。我尝试了以下方法,但它将file.txt中的每个日期都替换为循环中的最新日期,而不是一次更改一个,因此file.txt中的每个日期都变为相同的日期。我该怎么做

file = open(file.txt)
FILE = file.read()
a = re.compile(r"\d\d\d\d\d\d") # To find dates like 190213
b = re.findall(a, FILE)         # Finding all the dates and put them in a list

for k in b:
    for q in FILE.split():
        if k in q:
            c = a.sub("{\""+k+"\":", FILE)
print(c)

结果:{“190515:”大卫贝克街{“190515”:彼得霍兰街等

我想要的结果:{“190524:”大卫贝克街{“190515”:彼得霍兰街等


Tags: inretxtfor地址大卫filepeter
1条回答
网友
1楼 · 发布于 2024-04-28 04:39:17

您可以使用替换中的\1标记来引用匹配字符串的一部分

首先,捕获与组匹配的6个数字。使用此正则表达式:

(\d{6})

对于替换字符串,只需使用"{\"\\1\":",而不是"{\"" + k + "\":"

实际上你也不需要那么多for循环。假设输入文件很小,我认为不需要任何for循环

a = re.compile(r"(\d{6})")
c = a.sub("{\"\\1\":", FILE)
print(c)

如果您的输入文件很大,那么您可能需要一点一点地读取它,而不是一次读取整个文件

相关问题 更多 >