通过连接两个搜索结果重命名文件

时间:2017-12-05 22:54:29

标签: python python-3.x

我正在学习python和英语,我正在做这个代码来读取TXT并在其中找到一系列数字,然后用找到的序列重命名该文件。但除了寻找这个数字序列之外,我还需要找到一些单词,例如,如果我找到Apple,Watermelon和Pineapple这两个词,而不是找到Pumpkin,则将TXT归类为" fruits",以及重命名文件时,使用数字序列加上" f"以水果为例:

name_files2 = os.listdir(path_txt)

for TXT in name_files2:
    with open(path_txt + '\\' + TXT, "r") as content:
        search = re.search(r'(\d{5})\-(\d{2})\-(\d{4})\.(\d)\.(\d{2})\.(\d{4})|'
                           r'(\d{5})\s*\-\s*(\d{2})\s*\.\s*(\d{4})\.(\d)\.(\d{2})\.(\d{4})|'
                           r'(\d{7})\-(\d{2})\-(\d{4})\.(\d)\.(\d{4})', content.read())
    if search is not None:
        name2 = search.group(0)
        name2 = re.sub(r"\D", "", name2)
        fp = os.path.join("18_digitos", name2 + "_%d.txt")
        postfix = 0
        while os.path.exists(fp % postfix):
            postfix += 1
        os.rename(
            os.path.join(path_txt, TXT),
            fp % postfix
        )

我可以在文本中以这种方式找到这些词,但我不能同时做到这两个

if text_complete.find("apple") >= 0 and text_complete.find("watermelon") >= 0 and \
                text_complete.find("pineapple") >= 0 and text_complete.find("pumpkin") < 0:
    print("Find Fruit")

我基本上需要让两个代码一起工作,我需要它们找到18位数字序列,识别关键字并分类为例如果实,并用找到的序列+关键字排名+增量重命名文件。示例:12345678901234567_f_0,12345678901234567_f_1。

目前它只连接序列和增量,例如:12345678901234567_0,12345678901234567_1。当我们使用相同的数字序列时,我用来区分文件的增量

编辑:我没有得到的是加入从同一文本中提取的序列和分类水果。例如,相同的数字可以具有分类水果或蔬菜。因此,我需要找出每个水果或蔬菜分类中的哪个序列来重命名文件

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你想检查文件的内容两次:一次提取一系列数字,一次检查它是否包含“水果”字样。

为了多次查看文本,您应该将文件的内容存储在自己的变量中。

您可以将with块中的代码更改为:

with open(path_txt + '\\' + TXT, "r") as content:
    text_complete = content.read()

然后您可以检查您的号码序列

search = re.search(r'...', text_complete.read()) # ... is your long regular expression

您还可以运行if语句来检查“水果”字样:

if text_complete.find("apple") >= 0 and ... : # ... is the rest of your condition
    found_fruit = True

通过将文件的内容作为字符串存储为text_complete变量,您可以多次引用它,每次检查不同的内容。