首页 > 解决方案 > 从大型 csv 文件的每一行中取出最后一行?

问题描述

我有 12000 行,每行多行。我只需要在所有 12000 行中读取和写入新列

"► Контакт с пациентом | 07.02.2019 |  | 
► Принять в работу | 07.02.2019 |  | 
► Контакт с пациентом | 08.02.2019 |  | 
► Получить КП  | 14.02.2019 |  | 
► ждем КП | 18.02.2019 |  | 
► отправил ему ответ и стоимости лекарств! через дви недели с ним связываться  | 05.03.2019 |  | 
► арихив  | 23.03.2019 |  | ";
"► Контакт с пациентом | 19.06.2019 |  | 
► Принять в работу | 19.06.2019 |  | 
► Контакт с пациентом | 26.08.2019 |  | 
► Архив. | 10.09.2019 |  | ";

我只能为一排做到这一点,就是这样。我怎样才能通过所有 12000 行做到这一点

import pandas as pd
df = pd.read_csv('/Users/gfidarov/Desktop/crosscheck/crosscheck/sheet1')
r = df.split('|')
r = r[-4:]
r = '|'.join(r)
print(r)

在这里,我可以使用 csv 库读取它,但我不能只使用最后一个。如果我尝试像使用 pandas row = row[-4:] 那样做,我会出错。我该如何解决我的问题?

import csv

with open('/Users/gfidarov/Desktop/sheet_one') as f:
    reader = csv.DictReader(f, delimiter='|')
    for row in reader:
        print(list(row))

标签: pythonpandascsv

解决方案


对于该文件,每行的最后一行是在;双引号 ( ") 后以分号 ( ) 结尾的行。

所以这可能就足够了:

with open('/Users/gfidarov/Desktop/sheet_one') as f:
    for line in f:
        if line.strip().endswith('";'):           # Ok this is the line we want...
            line = line.strip().strip('";')       # clean it a little
            print(line)

顺便说一句,csv 尝试不起作用,因为默认情况下,双引号用于引用包含分隔符或换行符的字段,所以这里 csv 模块只会看到一个字段。


推荐阅读