Как прочитать CSV-файл и извлечь конкретный файл? - PullRequest
2 голосов
/ 29 мая 2019

Это мой CSV-файл:

CommitId                                RefactoringType      RefactoringDetail
d38f7b334856ed4007fb3ec0f8a5f7499ee2f2b8    Pull Up Attribute   "Pull Up Attribute  protected steps : int from class blokusgame.mi.android.hazi.blokus.GameLogic.PlayerAlgorithm to class blokusgame.mi.android.hazi.blokus.GameLogic.Player"
d38f7b334856ed4007fb3ec0f8a5f7499ee2f2b8    Pull Up Attribute   "Pull Up Attribute  protected steps : int from class blokusgame.mi.android.hazi.blokus.GameLogic.PlayerAlgorithm to class blokusgame.mi.android.hazi.blokus.GameLogic.Player"
d38f7b334856ed4007fb3ec0f8a5f7499ee2f2b8    Pull Up Attribute   "Pull Up Attribute  protected steps : int from class blokusgame.mi.android.hazi.blokus.GameLogic.PlayerAlgorithm to class blokusgame.mi.android.hazi.blokus.GameLogic.Pla

Мне нужно извлечь это:

RefactoringDetail
"Pull Up Attribute  protected steps : int from class blokusgame.mi.android.hazi.blokus.GameLogic.PlayerAlgorithm to class blokusgame.mi.android.hazi.blokus.GameLogic.Player"
"Pull Up Attribute  protected steps : int from class blokusgame.mi.android.hazi.blokus.GameLogic.PlayerAlgorithm to class blokusgame.mi.android.hazi.blokus.GameLogic.Player"
"Pull Up Attribute  protected steps : int from class blokusgame.mi.android.hazi.blokus.GameLogic.PlayerAlgorithm to class blokusgame.mi.android.hazi.blokus.GameLogic.Player"

Я попробовал этот код:

import pandas as pd
df = pd.read_csv('result_refactorings.csv', sep='delimiter', header=None)
df.iloc[:,-1]

возвращает все данные

Любая помощь, пожалуйста!

Ответы [ 2 ]

1 голос
/ 29 мая 2019

Если вы хотите просто использовать встроенный модуль CSV:

import csv
import re
third_column = []
with open("result_refactorings.csv") as csvfile:
    fixed_spaces = [re.sub(" {2,}","\t",x) for x in csvfile]
    reader = csv.DictReader(fixed_spaces, delimiter="\t")
    for row in reader:
        print(row["RefactoringDetail"])
        third_column.append(row["RefactoringDetail"])

Этот код одновременно печатает третий столбец и добавляет каждый элемент в третьем столбце в список third_column ... убирает один или другой в зависимости от того, что вы хотите сделать.

РЕДАКТИРОВАТЬ: При ближайшем рассмотрении кажется, что ваш ввод CSV разделен с неравным количеством пробелов ... а не на самом деле табуляции, как это выглядит .. Добавлено небольшое регулярное выражение для замены 2 или более параллельных пробелов на фактические таб .. так как в его текущем состоянии это не действительный CSV.

0 голосов
/ 29 мая 2019

Pandas отлично подходит для работы с CSV-файлами, и следующий код будет всем, что вам нужно, чтобы прочитать CSV-файл и сохранить весь столбец в переменную:

import pandas as pd
df = pd.read_csv('test.csv', sep=';')
refactoring_details = df['RefactoringDetail']
print(refactoring_details)

Редактировать: разделитель в предоставленном файле ; вместо значения по умолчанию ,.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...