我有一个包含file_name
和相应text
的 Dataframe ,并希望通过与一些文本或数字连接来更新imgs
文件夹中的file_name
和图像名称,input_folder
的结构如下所示:
input_folder --|
|--- imgs -- |-- 0.jpg
|-- 1.jpg
|-- 2.jpg
.........
|--- train.jsonl
train.jsonl
文件具有:
x一个一个一个一个x一个一个二个x
我期待的是:更新结果数据框中的file_name
列,重命名imgs
文件夹中的图像名称
out_folder --|
|-- imgs -- |-- A_0.jpg
|-- A_1.jpg
|-- A_2.jpg
.........
|---- train.jsonl
train.jsonl
文件具有:
{"file_name": "A_0.jpg", "text": "The Fulton County Grand Jury said Friday an investigation"}
{"file_name": "A_1.jpg", "text": "of Atlanta's recent primary election produced \"no evidence\" that"}
在使用@哈里特给出的代码片段后,我在train.jsonl
文件中获得了正确的新图像名称和相应的file_name:但我有一个新的问题,这是一个Unicode的问题,因为文本是在匈牙利语有一些特殊的字符无法识别将例如我得到了train.jsonl
在输出目录
{"file_name":"A_0.jpg","text":"El\u00e9gedetlenek az emberek a k\u00f6zoktat\u00e1ssal? Belf\u00f6ld - Magyarorsz\u00e1g h\u00edrei"}
但我期望的是:
x1米11米1x
1条答案
按热度按时间icnyk63a1#
您可以导入子进程来执行shell命令,以创建新目录并相应地重命名映像:
这应该会在
input_folder
所在的目录中为您提供一个output_folder,其中包含更新后的train.jsonl和imgs目录(包含名称更新后的图像)--让我知道这是否适合您。PS您必须使用深拷贝,因为浅拷贝将存储对原始 Dataframe 数据的引用。EDIT.1 * 在将新的 Dataframe 传递给.to_json之前,您需要打开将to编码设置为utf-8的 Dataframe ;并且,传递参数force_ascii=False(force_ascii;bool,默认值为True--强制编码字符串为ASCII。)*
EDIT.2我想我明白你的意思--这是因为我没有从新的jsonl本身重命名图像名称(只是你在问题中指定的方式)--你可以将文件名保存为列表中的元组(original,new)。然后,我们可以循环这些文件名元组,并在imgs/目录中调用'mv {original} {new}':