gpt4 book ai didi

python - python 忽略csv文件中的括号

转载 作者:行者123 更新时间:2023-11-30 23:35:57 25 4
gpt4 key购买 nike

我为 friend 写了一个 python 脚本:

  1. 获取她正在编目的照片的 CSV,其中的照片名称位于有序列表中
  2. 在文件系统上查找图像文件
  3. 将 csv 中的文件与系统上的文件进行匹配
  4. 按照文件在 CSV 中出现的顺序将文件系统上的图像复制到具有图形名称的文件夹

本质上,它确实是这样的:

<小时/>

输入:myphoto1.tiff、mypainting.jpeg、myphoto9.jpg、orderedlist.csv

输出:fig001.jpg、fig002.tiff、fig003.jpeg

<小时/>

此代码将在 Mac 上运行。这工作得很好,只是我们遇到了一个问题,即某些文件(全部由同一位摄影师制作)中有 1 个括号,例如

myphoto[fromitaly.jpg

这似乎破坏了我的正则表达式搜索:

相关代码:

orderedpaths = [path for item in target for path in filenames if re.search(item, path)]

其中 filenames 是系统上照片文件的列表,target 是 CSV 中的列表。此代码应该将 CSV 文件名(及其在列表中的后续顺序)与文件名相匹配,以给出系统上文件名的有序列表。

错误:

Traceback (most recent call last):
File "renameimages.py", line 43, in <module>
orderedpaths = [path for item in target for path in filenames if re.search(item, path)]
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 142, in search
return _compile(pattern, flags).search(string)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 244, in _compile
raise error, v # invalid expression
sre_constants.error: unexpected end of regular expression

我尝试或考虑过:

  1. 更改文件名/csv,但这不可扩展,最好是她部门将来会更多地使用这个脚本
  2. 正在调查将这些文件视为“原始”文件 - 但看起来并非如此这可以从 CSV 输入
  3. 从输入中删除[字符,但问题是那么输入将与系统上的实际文件不匹配。

我想我应该提到我只是怀疑这是问题所在:通过打印代码的进度,代码似乎到达了带有括号和错误的 CSV 项目。

最佳答案

相关代码是您使用用户输入构建正则表达式的部分,而不对其进行清理。你不应该这样做。

我相信你根本不需要使用RE。您可以使用 if item in pathpath.endswith(item) 或类似的方法找到匹配的字符串。

最好的选择是使用你的库:

from os.path import basename
orderedpaths = [ ... if basename(path) == item]

如果您坚持使用 RE,则应该使用 re.escape() 转义您的输入。 :

orderedpaths = [path for item in target for path in filenames
if re.search(re.escape(item), path)]

关于python - python 忽略csv文件中的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16888097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com