You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python批量读取多docx文件提取SSN并关联对应文件名需求

解决SSN提取与对应文件名关联的问题

我看到你的问题了——现在你能成功从批量docx文件里提取SSN,但没法把每个SSN和它所属的文件名关联起来对吧?问题出在你一开始把所有文件的内容合并成了一个大字符串data,这样就完全丢失了每个SSN的来源信息。咱们来调整代码逻辑,让每个提取到的SSN都能对应上它的“娘家”文件:

核心改动思路

  • 不再合并所有文件内容,而是逐个处理单个docx文件
  • 处理每个文件时,提取其中的SSN,同时将当前文件名和SSN配对保存
  • 最终构建包含文件名SSN两个字段的DataFrame,清晰展示关联关系

修改后的完整代码

import pandas as pd
import docx2txt
import glob

# 定义SSN验证函数(这个函数逻辑没问题,保留)
def isSSNNumber(text):
    if len(text) != 11:
        return False
    for i in range(0,3):
        if not text[i].isdecimal():
            return False
    if text[3] != '-':
        return False
    for i in range(4,6):
        if not text[i].isdecimal():
            return False
    if text[6] != '-':
        return False
    for i in range(7,11):
        if not text[i].isdecimal():
            return False
    return True

# 初始化结果列表,用来存储(文件名, SSN)的配对
result = []

# 遍历每个docx文件,逐个处理
for file_path in glob.glob('C:/Users/d118/Desktop/Word Files/*.docx'):
    # 获取文件名(提取路径最后一段,避免存完整路径)
    file_name = file_path.split('/')[-1]
    # 读取当前文件的内容
    file_content = docx2txt.process(file_path)
    # 在当前文件内容里查找SSN
    for i in range(len(file_content)):
        chunk = file_content[i:i+11]
        if isSSNNumber(chunk):
            # 将文件名和SSN配对加入结果列表
            result.append({'文件名': file_name, 'SSN': chunk})

# 构建DataFrame展示结果
df = pd.DataFrame(result)
print(df)

关键细节说明

  • 如果你的系统用Windows路径分隔符\,可以把文件名提取代码改成file_name = file_path.split('\\')[-1]
  • 每个文件的处理是独立的,这样每找到一个SSN,都能准确关联到当前处理的文件名
  • 结果列表存储字典结构,构建DataFrame时会自动生成对应列,可读性更强

这样修改后,你就能清晰看到每个SSN来自哪个docx文件啦!

内容的提问来源于stack exchange,提问作者DEEPAK GIRDHAR

火山引擎 最新活动