如果Namerow为空,则将行收集到一行中

2024-09-30 12:16:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个CSV文件,有几个列。其中两列分别称为Namn(Name)(Product)和Alla bilder(All images)。 有些产品有几个图像。这些图像被插入到它们自己的行中的“所有图像”下: 示例:

姓名      所有图像
姓名1      图像1
姓名2      图像2
                   图像2-1
                   图像2-2
姓名3      图像3

我正在尝试将属于一个产品的所有图像插入到第一个图像行中,并用|分隔。下面是我在朋友的帮助下编写的代码,但我就是没能成功(我下载了Python,并运行了.py脚本)-什么都没有发生。请注意,我以前从未接触过Python

import codecs, csv

def main():

    file_input = codecs.open('test.csv', 'r', 'utf-8-sig')
    dictreader = csv.DictReader(file_input, delimiter=',')

    main_rows = []
    fields = []
    temp_row = {}

    for row_item in dictreader:

        if len(fields) == 0:
            # fix the fields header...
            for field in row_item:
                fields.append(field)

        if row_item['Name'] == '':
            # this row probably only contains picture information...
            if 'Alla bilder' in row_item and row_item['Alla bilder'] != '':
                if 'Alla bilder' not in temp_row:
                    temp_row['Alla bilder'] = row_item['Alla bilder']
                elif temp_row['Alla bilder'] == '':
                    temp_row['Alla bilder'] = row_item['Alla bilder']
                else:
                    temp_row['Alla bilder'] = temp_row['Alla bilder'] + '|' + row_item['Alla bilder']
        else:
            # this seems to be a new product row...

            if len(temp_row) != 0:
                # there seems to be something to store....
                print('\nSTORING: ' + str(temp_row))
                main_rows.append(temp_row)
                temp_row = {}

            # print('\nNEW ROW: ' + str(row_item))
            temp_row = row_item

    if len(temp_row) != 0:
        # there seems to be something to store....
        print('\nSTORING: ' + str(temp_row))
        main_rows.append(temp_row)

    file_output = codecs.open('test2.csv', 'w', 'utf-8-sig')
    dictwriter = csv.DictWriter(file_output, delimiter=',', fieldnames=fields)
    dictwriter.writerows(main_rows)


if _name_ == "_main_":
    main()
else:
    print('This file was called from another class...')

Tags: csvtoin图像fieldsifmainitem
1条回答
网友
1楼 · 发布于 2024-09-30 12:16:39

从控制台启动脚本时会出现什么错误或消息

尝试改变

if _name_ == "_main_":
   main()
else:
   print('This file was called from another class...')

为了

if __name__ == "__main__":
   main()
else:
   print('This file was called from another class...')

这是我看到的唯一一个错误(如果我没有错,那就是__name__,而不是_name_)。改变对我来说很有用。使用此输入:

Name,Alla bilder
Name1,Image1
Name2,Image2
,Image2-1
,Image2-2
Name3,Image3

我得到下一个结果:

Name1,Image1
Name2,Image2|Image2-1|Image2-2
Name3,Image3

这是你的问题吗

相关问题 更多 >

    热门问题