首页 > 解决方案 > 根据分隔符拆分字符串

问题描述

我有一个 csv 文件,它由 5 列组成,其中我只需要用管道(|)分隔符分隔的两列。以下是其中几个:

SERIAL_NO|N|1385,45,871,104|1|?
CUST_ID|N|1704,211,552,71|1|?
PROD_TYPE|A|367,286,1167,74|1|?
BRANCH_CODE|N|1892,429,254,74|1|?
BRANCH_NAME|A|682,412,774,72|1|?
DATE|N|2022,581,241,82-1863,581,137,75-1697,581,153,85|1|?

我只需要列表中的第 0 和第 2 索引数据,以便我可以根据给定的坐标将该数据提供给图像,我将在图像中进行裁剪,并使用与第 0 索引数据相同的文件名保存这些图像。

为了更清楚这里是我想要做的,我有一个坐标在 csv 文件中的图像(比如这个 1385,45,871,104),并且在根据给定坐标进行裁剪后,我想保存名称为 0th 的文件该行的索引数据是(SERIAL_NO)。我必须对所有行执行此操作,并且某些行有多个坐标,除以 - 符号。

标签: pythonstringcrop

解决方案


您可以让csv模块在管道字符上为您拆分文件:

import csv
f = open("file.csv", "r")
reader = csv.reader(f, delimiter='|')
for row in reader:
    print (row[0],":",row[2].split("-"))

输出是

SERIAL_NO : ['1385,45,871,104']
CUST_ID : ['1704,211,552,71']
PROD_TYPE : ['367,286,1167,74']
BRANCH_CODE : ['1892,429,254,74']
BRANCH_NAME : ['682,412,774,72']
DATE : ['2022,581,241,82', '1863,581,137,75', '1697,581,153,85']

推荐阅读