Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.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_Pandas_Python 3.7 - Fatal编程技术网

Python 从文件名中获取单词,并将其压缩并存储为变量

Python 从文件名中获取单词,并将其压缩并存储为变量,python,pandas,python-3.7,Python,Pandas,Python 3.7,我有一个包含两个单词的.pdf文件目录;名字和姓氏作为文件名,zipcode;i、 e.“RON船长11222.pdf” 我想,根据每个文件,从目录中的每个文件中获取单词NAME和number ZIP import os for filename in os.listdir(config.Total): if filename.endswith(".pdf"): 正如我稍后将使用每个名称一样,我将查找用于重命名的实际名称。i、 下面是我试图在逻辑上完成的全部内容;但我认为以上是问题的

我有一个包含两个单词的.pdf文件目录;名字和姓氏作为文件名,zipcode;i、 e.“RON船长11222.pdf”

我想,根据每个文件,从目录中的每个文件中获取单词NAME和number ZIP

import os

for filename in os.listdir(config.Total):
    if filename.endswith(".pdf"):
正如我稍后将使用每个名称一样,我将查找用于重命名的实际名称。i、 下面是我试图在逻辑上完成的全部内容;但我认为以上是问题的一部分:

for filename in os.listdir(config.Total):
    if filename.endswith(".pdf"):

        data1 = pd.read_excel(config.Excel1)

        df = pd.DataFrame(data1)
        header = df.iloc[0]

        row_numberd1 = df[df['Member Name'].str.contains(Name)].index.min()
        row_numberd12 = df[df['Member Address Line 3'].str.contains(Zip)].index.min()

    if row_numberd1 == row_numberd12: # When rows match of NameUp and Zip var in DF1
        rowMatched = row_numberd1
        print("Match Found")
        print(rowMatched)

        MemberID = df['ID'][rowMatched]
        MemberI = str(MemberID)

        with open("./pdfs/ID/" + MemberI + ".pdf", "wb") as outputStream:
             output.write(outputStream)

我没有试图将这些存储到数据帧中。我想搜索excel文件数据框以查找名称和zip在同一行中的位置。然后使用该行号获取列值作为新名称。

您可以使用:

for filename in os.listdir(config.Total):
    if filename.endswith(".pdf"):
         First_Name, Last_Name, Zip = filename.replace(".pdf",'').split()
         Name = First_Name+Last_Name
然后您可以按预期使用Name和Zip变量

我认为glob模块是一个很好的用例

我假设您的数据将遵循标准模式,即名字、姓氏和邮政编码,用空格分隔

import os
import glob

path = r'\your\dir'
files = glob.glob(os.path.join(path) + '\*.pdf') 

pdfs = [os.path.basename(f) for f in files] # pass the names into a list.

import pandas as pd 
df = pd.DataFrame({'PDF' : pdfs}) # make a data frame with the file name. 
df['PDF'] = df['PDF'].str.replace('.pdf','') # remove the PDF element, 


# assign your variables to columns 

df['First Name'] = df['PDF'].str.split(' ',expand=True)[0]
df['Last Name'] = df['PDF'].str.split(' ',expand=True)[1]
df['Zip'] = df['PDF'].str.split(' ',expand=True)[2]

简单地声明‘First_Name’、‘Last_Name’和‘Zip’将自动从每个文件的名称中获取它?这并不是简单地声明@CaptainRon,而是将其拆分为文件名本身就是一个字符串。这似乎回答了我问题的第一部分;现在第二部分在这里:如何使用DF中的值重命名:谢谢,我不想将这些值存储到数据帧中。我想搜索excel文件数据框以查找名称和zip在同一行中的位置。然后使用该行号获取列值作为新名称。能否显示一些excel数据框的示例?另外,您想将pdf名称改右还是复制?