我有一个处理CSV的Python代码,但是在信息输出方面有一个问题

1tuwyuhd  于 2023-11-14  发布在  Python
关注(0)|答案(3)|浏览(112)

我有这个代码:

import csv

def FileLoad():
    read_obj = csv.reader(open('csv_project/loqfile_15.csv', encoding='utf-8'))
    global res
    res = list(read_obj)
FileLoad()

def NewCsvFile():
    pass

def LoadToTable():
    for elem in res:
        splitenn_elem = str(elem).split(';')
        for i in elem:
            print(list(i)[5])
LoadToTable()

字符串
这样一个csv文件:

721850;100004;Старший специалист;Иваново;27.08.2023;97;13
943677;100006;Старший специалист;Иваново;27.08.2023;24;6
331068;100007;Ведущий специалист;Владимир;27.08.2023;29;8
18087;100008;Ведущий специалист;Уфа;27.08.2023;65;14
359919;100010;Старший специалист;Иваново;27.08.2023;79;7
733849;100011;Ведущий специалист;Уфа;27.08.2023;71;7
324848;100012;Ведущий специалист;Владимир;27.08.2023;28;11
825997;100013;Старший специалист;Хабаровск;27.08.2023;22;12
830637;100014;Старший специалист;Владимир;27.08.2023;54;5
763428;100009;Старший специалист;Уфа;28.08.2023;55;5
359919;100010;Старший специалист;Иваново;28.08.2023;42;12
733849;100011;Ведущий специалист;Уфа;28.08.2023;27;8
324848;100012;Ведущий специалист;Владимир;28.08.2023;64;8
825997;100013;Старший специалист;Хабаровск;28.08.2023;90;14
830637;100014;Старший специалист;Владимир;28.08.2023;36;8
435535;100001;Главный специалист;Владимир;28.08.2023;70;9
773673;100003;Ведущий специалист;Уфа;28.08.2023;95;9
721850;100004;Старший специалист;Иваново;28.08.2023;85;12
943677;100006;Старший специалист;Иваново;28.08.2023;56;11
331068;100007;Ведущий специалист;Владимир;28.08.2023;90;9
18087;100008;Ведущий специалист;Уфа;28.08.2023;57;13
435535;100001;Главный специалист;Владимир;29.08.2023;64;8
773673;100003;Ведущий специалист;Уфа;29.08.2023;34;12
721850;100004;Старший специалист;Иваново;29.08.2023;32;11
697888;100005;Главный специалист;Уфа;29.08.2023;55;10
943677;100006;Старший специалист;Иваново;29.08.2023;52;8
18087;100008;Ведущий специалист;Уфа;29.08.2023;63;7
763428;100009;Старший специалист;Уфа;29.08.2023;85;6
733849;100011;Ведущий специалист;Уфа;29.08.2023;66;7
825997;100013;Старший специалист;Хабаровск;29.08.2023;82;10
830637;100014;Старший специалист;Владимир;29.08.2023;48;13
331068;100007;Ведущий специалист;Владимир;29.08.2023;28;4
18087;100008;Ведущий специалист;Уфа;30.08.2023;91;9
359919;100010;Старший специалист;Иваново;30.08.2023;87;8
324848;100012;Ведущий специалист;Владимир;30.08.2023;66;4
825997;100013;Старший специалист;Хабаровск;30.08.2023;96;14
830637;100014;Старший специалист;Владимир;30.08.2023;62;6
435535;100001;Главный специалист;Владимир;30.08.2023;42;14
419323;100002;Главный специалист;Иваново;30.08.2023;36;13
773673;100003;Ведущий специалист;Уфа;30.08.2023;86;14
721850;100004;Старший специалист;Иваново;30.08.2023;25;6
943677;100006;Старший специалист;Иваново;30.08.2023;39;7
331068;100007;Ведущий специалист;Владимир;30.08.2023;93;4
763428;100009;Старший специалист;Уфа;30.08.2023;72;14
435535;100001;Главный специалист;Владимир;31.08.2023;20;5
773673;100003;Ведущий специалист;Уфа;31.08.2023;52;4
721850;100004;Старший специалист;Иваново;31.08.2023;35;13
943677;100006;Старший специалист;Иваново;31.08.2023;64;12
763428;100009;Старший специалист;Уфа;31.08.2023;88;13
733849;100011;Ведущий специалист;Уфа;31.08.2023;75;14
324848;100012;Ведущий специалист;Владимир;31.08.2023;68;12
825997;100013;Старший специалист;Хабаровск;31.08.2023;84;7
830637;100014;Старший специалист;Владимир;31.08.2023;53;13
419323;100002;Главный специалист;Иваново;31.08.2023;61;12


当我上传一个csv文件到我的程序中时,我得到一个有许多嵌套列表的列表(每个嵌套列表都是一个来自csv文件的字符串)。我想从每行输出一个索引为2的元素,但我得到了这样的输出:

1
3
1
0
9
3
4
5
0
3
9
3
4
5
0
5
3
1
3
1
0
5
3
1
7
3
0
3
3
5
0
1
0
9
4
5
0
5
9
3
1
3
1
3
5
3
1
3
3
3
4
5
0
9


我不知道我能做什么
我期望看到每行索引为2的每个元素的输出,但我得到了我已经指定的结果

qv7cva1a

qv7cva1a1#

你想得到column2(index2),如果我得到正确的话。

验证码:

def LoadToTable():
    for elem in res:
        split_elem = elem[0].split(';')  
        if len(split_elem) > 2:
            print(split_elem[2])  # index 2

字符串

示例代码:

import csv

def FileLoad():
    read_obj = csv.reader(open('sample.csv', encoding='utf-8'))
    global res
    res = list(read_obj)

FileLoad()

def LoadToTable():
    for elem in res:
        split_elem = elem[0].split(';')  
        if len(split_elem) > 2:
            print(split_elem[2])  # index 2

LoadToTable()

输出:


的数据

9o685dep

9o685dep2#

我对这个问题的解释是,你想打印CSV文件中每行的第三列(索引2)。如果是这样的话:

import csv

FILE = 'foo.csv'

with open(file=FILE, mode='r', encoding='utf-8', newline='') as file:
    for row in csv.reader(file, delimiter=';'):
        print(row[2])

# or, without the csv module:

with open(file=FILE, mode='r', encoding='utf-8') as file:
    for line in file:
        print(line.split(';')[2])

字符串

polkgigr

polkgigr3#

我可能会采取稍微不同的方法:

from pathlib import Path
from typing import Iterator

def file_load(filename: Path) -> Iterator:
    with filename.open(encoding="utf-8") as in_file:
        for line in in_file:
            yield line.rstrip().split(";")

if __name__ == "__main__":
    for rec in file_load(Path("data.csv")):
        print(rec[2])

字符串
除非您的csv文件更复杂(因此可以从csv库中的工具中受益),否则我可能会放弃使用它

相关问题