获取png文件名称的第一个单词和char

时间:2017-03-31 10:49:31

标签: python python-3.x file csv png

我有一组png图像,命名如下

slash_67_45.png
A_91_14.png
a_38_10.png
%_34_45.png
é_67_78.png
è_67_56.png
e_67_10.png
B_56_54.png
b_45_45.png
@_34_45.png
À_34_5.png
à_23_6.png
7_23_6.png
'_254.png
"_23.png
\_67.png
[_45.png

我想只检索第一个'_'之前的单词或字符,并将其存储在csv文件的列中,如下所示

charachter_column         its-image               imag-without-character


    slash                 slash_67_45.png         _67_45.png
    A                     A_91_14.png             _91_14.png
    a                     a_38_10.png             _38_10.png
    %                     %_34_45.png             _34_45.png
    é                     è_67_78.png             _67_78.png
    è                     é_67_56.png             _67_56.png
    e                     e_67_10.png             _67_10.png
    B                    B_56_54.png              _56_54.png
    b                     b_45_45.png             _45_45.png
    @                     @_34_45.png             _34_45.png
    À                      A_34_5.png             _34_5.png
    à                      à_23_6.png             _23_6.png
    7                      7_23_6.png             _23_6.png
    '                       '_254.png             _254.png
    "                        "_23.png             _23.png
    \                        \_67.png             _67.png
    [                        [_45.png             _45.png

以下是我尝试过的代码:

import os
import pandas as pd
charachter_column= []
its_image=[]
image_without_character=[]

temp_df = pd.DataFrame({'charachter_column ': charachter_column , 'its_image ': its-image,
'image_without_character' : image_without_character})
temp_df.to_csv('/home/images_charac.csv')

DATA_DIR = "/home/images/"
png_files=sorted(os.listdir(DATA_DIR))
for png in png_files:
    print(os.path.join(DATA_DIR,file))
    file_name=file
    character_column= file_name[:file_name.find("_")]
    image_without_character=file_name[file_name.find("_")+1:]

    temp_df = pd.DataFrame({'charachter_column ': charachter_column , 'its_image ': file_name,
'image_without_character' : image_without_character})
temp_df.to_csv('/home/images_charac.csv')

这里的问题是我有3 '_'我想只考虑左边遇到的第一个'_'

1 个答案:

答案 0 :(得分:1)

您的代码似乎存在其他一些问题,但此示例应解决您遇到的根本问题:

files = ['slash_67_45.png',
'A_91_14.png',
'a_38_10.png',
'%_34_45.png',
'é_67_78.png',
'è_67_56.png',
'e_67_10.png',
'B_56_54.png',
'b_45_45.png']

for png_file in files:
    character, everything_else = png_file.split('_',maxsplit=1)
    print(character)

A --- 91_14.png
a --- 38_10.png
% --- 34_45.png
é --- 67_78.png
è --- 67_56.png
e --- 67_10.png
B --- 56_54.png
b --- 45_45.png

修改

看起来你想保留'_'。在这种情况下,你可以这样做:

for png_file in files:
    character, sep, everything_else = png_file.partition('_')
    print(character,'---', sep + everything_else)

slash --- _67_45.png
A --- _91_14.png
a --- _38_10.png
% --- _34_45.png
é --- _67_78.png
è --- _67_56.png
e --- _67_10.png
B --- _56_54.png
b --- _45_45.png