在文件中进行模式搜索并替换找到的结果

卢卡斯

我正在尝试编写一个简单的程序,该程序将在给定目录中打开文本文件以搜索与给定模式匹配的所有字符串,并在删除所有其他信息的同时将它们替换为所需的字符串。我有两个.txt文件:

User_321.txt,其中包含:

321_AliceKelly001.jpg [size_info] [date_info] [geo_location_info] ... [other info]
321_AliceKelly002.jpg [size_info] [date_info] [geo_location_info] ... [other info] 
321_AliceKelly003.jpg [size_info] [date_info] [geo_location_info] ... [other info]
 ...
321_AliceKelly125.jpg [size_info] [date_info] [geo_location_info] ... [other info]

和User_205.txt,其中包含:

 205_CarlCarlson001.jpg [size_info] [date_info] [geo_location_info] ... [other info]
 205_CarlCarlson002.jpg [size_info] [date_info] [geo_location_info] ... [other info]
 205_CarlCarlson_003.jpg [size_info] [date_info] [geo_location_info] ... [other info]
 205_CarlCarlson007.jpg [size_info] [date_info] [geo_location_info] ... [other info]

我希望User_321.txt包含:

321_AliceKelly_001.jpg
321_AliceKelly_002.jpg 
321_AliceKelly_003.jpg
 ...
321_AliceKelly_125.jpg

和User_205.txt包含:

 205_CarlCarlson_001.jpg
 205_CarlCarlson_002.jpg
 205_CarlCarlson_003.jpg
 205_CarlCarlson_007.jpg

所以我只想在名称和最后3位数字之间添加“ _”。我能够处理所有条目都是统一的情况,即仅包含以下形式的条目:

     \d\d\d_[a-zA-Z]\d\d\d.jpg [size_info] [date_info] [geo_location_info] ... [other info]

使用以下代码:

import os, re,

path = 'C:\\Users\\ME\\Desktop\\TEST'
text_files = [filename for filename in os.listdir(path)]

desired_text = re.compile(r'\w+.jpg')
#desired_ending = re.compile(r'$[a-zA-Z]\d\d\d.jpg')

for i in range(len(text_files)):
    working_file = path + '\\' + text_files[i]
    fin = open(working_file, 'r')
    match = ''

    for line in fin:
        mo1 = desired_text.search(line)
        if mo1 != '':
            match += mo1.group()[:-7] + '_' + mo1.group()[-7:]+'\n'

    fin.close()

    fout = open(working_file, 'w')
    fout.write(match)
    fout.close()

我在第二种情况下遇到了困难,即当我有一个已经采用所需格式的条目时,例如:

 205_CarlCarlson_003.jpg [size_info] [date_info] [geo_location_info] ... [other info]
 205_CarlCarlson007.jpg [size_info] [date_info] [geo_location_info] ... [other info].

我希望它跳过重命名已采用所需格式的条目的内容,并继续其余的内容。

我看过如何使用Python搜索和替换文件中的文本?一种便宜的方法,可以在大型文本文件中搜索字符串,并在Python中搜索并替换文件中的一行这些情况似乎与搜索特定字符串有关,并使用fileinput模块将其替换为另一个字符串。我想做类似的事情,但搜索时要灵活一些。

弗朗切斯·托拉德夫洛特(Francesc Torradeflot)

我稍微修改了您的代码,处理了两种不同的情况,它似乎可以工作:

import os, re

path = 'C:\\Users\\ME\\Desktop\\TEST'
text_files = [filename for filename in os.listdir(path)]

desired_text1 = re.compile(r'^\d{3}_[a-zA-Z]+\d{3}.jpg')
desired_text2 = re.compile(r'^\d{3}_[a-zA-Z]+_\d{3}.jpg')

for i in range(len(text_files)):
    working_file = path + '\\' + text_files[i]
    fin = open(working_file, 'r')
    match = ''

    for line in fin:
        mo1 = desired_text1.search(line)
        mo2 = desired_text2.search(line)
        if mo1:
            match += mo1.group()[:-7] + '_' + mo1.group()[-7:]+'\n'
        elif mo2:
            match += mo2.group() +'\n'

    fin.close()

    fout = open(working_file, 'w')
    fout.write(match)
    fout.close()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用循环在R中进行模式搜索

来自分类Dev

在netrw中进行模式搜索时出错

来自分类Dev

sed:搜索文件并替换行中的模式

来自分类Dev

搜索模式并替换perl模块文件的整行

来自分类Dev

搜索模式并替换文件中的值

来自分类Dev

Google表格可以从列表中进行多次搜索和替换

来自分类Dev

如何grep,然后在输出中进行搜索和替换?

来自分类Dev

我想在存储库模式中进行通用搜索选项

来自分类Dev

使用VIM进行替换,重用部分搜索模式

来自分类Dev

让自动补全功能也在相关文件中进行搜索

来自分类Dev

使用C ++在文件中进行字符串搜索/索引

来自分类Dev

在XML文件中进行精确的字符串搜索?

来自分类Dev

在文本文件中进行C#搜索

来自分类Dev

如何在 JSON 文件中进行“智能搜索”?

来自分类Dev

搜索模式并替换行

来自分类Dev

grep从包含模式列表的文件中搜索模式,将每个模式的结果写入单个文件

来自分类Dev

MYPhpAdmin 搜索找到结果,但使用替换时显示 0 个结果

来自分类Dev

在文件B中,逐行找到文件A中的模式,并替换为文件C中的模式

来自分类Dev

Vim 搜索模式替换搜索模式

来自分类Dev

在HTML中进行字符串搜索以找到最大的匹配对

来自分类Dev

如何忽略部分文本,并在其余部分中进行搜索和替换?

来自分类Dev

如何在Aptana JavaScript编辑器中进行搜索/替换,仅用于选择?

来自分类Dev

Linux ed 编辑器在一行中进行多次搜索/替换

来自分类Dev

在Powershell中进行特定搜索

来自分类Dev

在Vim中进行字典搜索

来自分类Dev

在vi中使用通配符使用搜索到的模式进行搜索和替换

来自分类Dev

在Photoshop中进行颜色替换

来自分类Dev

光标反转以在编辑器中进行插入和替换模式

来自分类Dev

在Python中进行模式匹配和替换的更好方法是什么?

Related 相关文章

  1. 1

    使用循环在R中进行模式搜索

  2. 2

    在netrw中进行模式搜索时出错

  3. 3

    sed:搜索文件并替换行中的模式

  4. 4

    搜索模式并替换perl模块文件的整行

  5. 5

    搜索模式并替换文件中的值

  6. 6

    Google表格可以从列表中进行多次搜索和替换

  7. 7

    如何grep,然后在输出中进行搜索和替换?

  8. 8

    我想在存储库模式中进行通用搜索选项

  9. 9

    使用VIM进行替换,重用部分搜索模式

  10. 10

    让自动补全功能也在相关文件中进行搜索

  11. 11

    使用C ++在文件中进行字符串搜索/索引

  12. 12

    在XML文件中进行精确的字符串搜索?

  13. 13

    在文本文件中进行C#搜索

  14. 14

    如何在 JSON 文件中进行“智能搜索”?

  15. 15

    搜索模式并替换行

  16. 16

    grep从包含模式列表的文件中搜索模式,将每个模式的结果写入单个文件

  17. 17

    MYPhpAdmin 搜索找到结果,但使用替换时显示 0 个结果

  18. 18

    在文件B中,逐行找到文件A中的模式,并替换为文件C中的模式

  19. 19

    Vim 搜索模式替换搜索模式

  20. 20

    在HTML中进行字符串搜索以找到最大的匹配对

  21. 21

    如何忽略部分文本,并在其余部分中进行搜索和替换?

  22. 22

    如何在Aptana JavaScript编辑器中进行搜索/替换,仅用于选择?

  23. 23

    Linux ed 编辑器在一行中进行多次搜索/替换

  24. 24

    在Powershell中进行特定搜索

  25. 25

    在Vim中进行字典搜索

  26. 26

    在vi中使用通配符使用搜索到的模式进行搜索和替换

  27. 27

    在Photoshop中进行颜色替换

  28. 28

    光标反转以在编辑器中进行插入和替换模式

  29. 29

    在Python中进行模式匹配和替换的更好方法是什么?

热门标签

归档