Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
1 / 1 / 0
Регистрация: 01.10.2012
Сообщений: 158
1

Копирование столбца из одного файла в другой

03.04.2019, 15:25. Просмотров 1883. Ответов 11
Метки нет (Все метки)

Есть файл, откуда нужно взять четвертый столбец. Файл выглядит так:
1 11 21 31 41
2 12 22 32 42
3 13 23 33 43
4 14 24 34 44
5 15 25 35 45
6 16 26 36 46
Нужно записать новый файл с четвертым столбцом из этого файла.

Я попытался так, сначала вывести и затем записать новый файл, но вместо этого получаю пустой файл:
Python
1
2
3
4
5
6
ff = open("1234.txt", 'w')
df1 = ff.iloc[:,3:3]
print(df1)
 
with open('12345.txt', 'w') as F:
    df.writelines('12345.txt')
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2019, 15:25
Ответы с готовыми решениями:

Передача информации из одного файла в другой
Всем привет! Сразу скажу, я "govnokodeeer". Но занесло в эту степь и столкнулся с такой...

Копирование одного текстового файла в другой, используя посимвольное, построчное и поблочное копирование
Здраствуйте, у меня такая проблемма мне надо обеспечить копирование одного текстового файла в...

Копирование данных из одного столбца в другой с условием связанным с датами
Здравствуйте! Я столкнулся со след. задачей: Есть столбец A в котором указанны числа и столбец...

Копирование ячеек столбца одного листа и переноса на другой лист
Доброго времени суток всем вам, уважаемые форумчане. В виду рабочей необходимости, я начал...

__________________

Записывайтесь на профессиональные курсы Fullstack-разработчиков на Python
11
168 / 121 / 60
Регистрация: 06.02.2015
Сообщений: 300
03.04.2019, 15:45 2
Python
1
2
3
4
5
6
7
8
9
10
11
f=open("in.txt","r",encoding="utf8")
arr=[]
for line in f:
        tmp=line.strip().split(' ')
        arr.append(tmp)
f.close()
 
f=open("out.txt","w",encoding="utf8")
for i in range(len(arr)):
        f.write(arr[i][3]+'\n')
f.close()
В данном примере split по одному пробелу.
0
1 / 1 / 0
Регистрация: 01.10.2012
Сообщений: 158
03.04.2019, 15:53  [ТС] 3
А какой должен быть split в таком случае:
0
Миниатюры
Копирование столбца из одного файла в другой  
168 / 121 / 60
Регистрация: 06.02.2015
Сообщений: 300
03.04.2019, 16:02 4
расстояние между столбцами выдели и вставь в split
Попробуй запустить
0
1 / 1 / 0
Регистрация: 01.10.2012
Сообщений: 158
03.04.2019, 16:21  [ТС] 5
Так в том и дело, что в какой-то строке 10 пробелов, в другой строке 12 пробелов, это видно на скрине.
0
Эксперт Python
4469 / 3257 / 1054
Регистрация: 28.10.2013
Сообщений: 8,390
Записей в блоге: 1
03.04.2019, 17:11 6
Цитата Сообщение от Shahmatist Посмотреть сообщение
ff.iloc[:,3:3]
Вы про pandas что-нибудь слышали? Этот синтаксис оттуда.
Его нельзя применять к файловому объекту.

Python
1
2
import pandas as pd
data = pd.read_csv("data.txt", sep="\s+", header=None)
В data будет записан dataframe.
Вот с ним уже можно выполнять любые табличные операции. Обратитесь к соответствующей документации.
0
168 / 121 / 60
Регистрация: 06.02.2015
Сообщений: 300
03.04.2019, 17:12 7
Python
1
2
3
4
5
6
7
8
9
import numpy as np
 
f=open("in.txt","r",encoding="utf8")
arr=np.loadtxt(f)
 
f=open("out.txt","w",encoding="utf8")
for i in range(len(arr)):
        f.write(str(int(arr[i][3]))+'\n')
f.close()
0
58 / 83 / 16
Регистрация: 25.03.2019
Сообщений: 235
03.04.2019, 17:23 8
Можно так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
 
 
if __name__ == "__main__":
    new_lines = []
    with open("test1", 'r') as fd:
        lines = fd.readlines()
    str_number = 0
    while str_number < len(lines):
        string = lines[str_number]
        string = string.replace("\n", '')
        string = string.split(' ')
        element_num = 0
        # Удаление пробелов.
        while element_num < len(string):
            if string[element_num] == '':
                del string[element_num]
            else:
                element_num += 1
        # Заполнение нового списка.
        if len(string) != 0:
            new_line = string[3] + "\n"
            new_lines.append(new_line)
        str_number += 1
    with open("result", 'w') as fd:
        fd.writelines(new_lines)
0
Эксперт Python
4469 / 3257 / 1054
Регистрация: 28.10.2013
Сообщений: 8,390
Записей в блоге: 1
03.04.2019, 17:51 9
Цитата Сообщение от Yuri197 Посмотреть сообщение
Можно так
Зачем? Это же csv\tsv файл.
Применять для чтения структурированных файлов свои "велосипеды" непрофессионально и не соответствует дзену Python.
0
58 / 83 / 16
Регистрация: 25.03.2019
Сообщений: 235
03.04.2019, 17:58 10
Цитата Сообщение от Garry Galler Посмотреть сообщение
Это же csv\tsv файл.
Если посмотреть на первый пример, то обычный текстовый. Если бы был стуктурированный, то вопроса о количестве пробелов не возникло бы.
0
Эксперт Python
4469 / 3257 / 1054
Регистрация: 28.10.2013
Сообщений: 8,390
Записей в блоге: 1
03.04.2019, 18:23 11
Цитата Сообщение от Yuri197 Посмотреть сообщение
Если бы был стуктурированный,
В первом примере сепаратор "один пробел". Во втором - вангую - табуляция. Просто ТС не различает их.

В любом случае, даже если файлы не совсем корректные csv\tsv - используется сепаратор разной длины - они структурированы.
И pandas легко прочитает и такой файл.

P.S. Кстати, есть любопытный бенчмарк сравнения скорости чтения csv файлов. На больших файлах - от миллиона строк - pandas опередил Fortran и C++.
0
1 / 1 / 0
Регистрация: 01.10.2012
Сообщений: 158
03.04.2019, 18:42  [ТС] 12
Цитата Сообщение от Garry Galler Посмотреть сообщение
Во втором - вангую - табуляция.
Табуляция - это когда Tab'ом можно воспроизвести то же самое после "матрицы", однако, у меня это не получилось n-ым кол-вом Tab'ов.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2019, 18:42

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Копирование из одного файла в другой
Привет всем. У меня такая проблема, я написал код который выполняет чтение строк из одного файла и...

Копирование одного файла в другой
Приветствую. Мне нужна помощь в написании программы. Условие: Требуется создать программу,...

Копирование текста из одного файла в другой
Здрасте! Такой вопрос: как программно открыть 2 текстовых файла подряд, но чтобы комп переместил...

Копирование слов из одного файла в другой
Написать программу для автоматического копирования слов из одного файла в другой. Копировать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.