Python: Как мне отделить смесь строк и целых чисел от CSV? - PullRequest
0 голосов
/ 03 марта 2020
import os
import csv
import pandas as pd
import itertools


data = r"C:\Users\chase\Documents\Exercise\MA Exercise_20190328-2"
for root, dirs, files in os.walk(data):
    for file in files:
        if file.endswith(".txt"):
            print(os.path.join(root, file))

    df = open("PikesPeak_Males.txt", "r")
    if df.mode == "r":
        contents = df.read()
        print(contents)

    with open("PikesPeak_Males.txt", "r") as in_file:
        stripped = (line.strip() for line in in_file)
        lines = (line.split(",") for line in stripped if line)
        with open("PikesPeak_Males.csv", "w") as out_file:
            writer = csv.writer(out_file)
            writer.writerow(("Place", "Div/Tot", "Number", "Name", "Age", "Hometown", "Gun Time", "Net Time", "Pace"))
            writer.writerows(lines)

Итак, у меня есть набор данных о времени пробега для гонщиков. Я преобразовал текстовый файл в csv, однако, я хочу разбить все данные на следующие столбцы: «Поместить», «Div / Tot», «Number» и т. Д. c ... Но я не уверен, как сделать это, так как нет никаких запятых или функций, чтобы разделить строки. Основная цель - рассчитать среднее время бега гонщиков. Вот как это выглядит сейчас: enter image description here

Пример того, как я хочу, чтобы мой CSV выглядел:

enter image description here PikesPeak_Male.txt

PikesPeakData

1 Ответ

0 голосов
/ 03 марта 2020

Проверьте, какие разделители есть в файле .txt. Если они являются вкладками, используйте табуляцию в качестве разделителя при чтении csv:

pd.read_csv("filename.csv", header=None, delimiter=r"\t")

Если разделители представляют собой кратные пробелы, сначала сделайте один проход по файлу .txt, чтобы преобразовать кратные пробелы в один пробел или какой-либо другой символ ( "\ t", ",", ...) и затем использовать выбранный символ в качестве разделителя.

...