Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Вопрос-Ответ Новый топик    Ответить
 Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
катастрофа
Member

Откуда:
Сообщений: 3173
здравствуйте, как данные в текстовом файле с
00ID;Name;Price
01;Chairs;$40.00
02;Table;$75.00
03;Fork;$1.50
проще всего сделать
00ID;01;02;03
Name;Chairs;Table;Fork
Price;40.00;$75.00;$1.50
?? спс
ключевое слово в вопросе "проще"
считать текст в массив, затем с помощью двух вложенных циклов вывести результат в новый или в тот-же файл - не подходит, ещё проще есть вариант?
ну или получить например первый столбец - 00ID;01;02;03 без цикла
24 июл 20, 17:19    [22173322]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9249
открыть в Excel
далее https://support.microsoft.com/ru-ru/office/транспонирование-данных-из-строк-в-столбцы-и-наоборот-3419f2e3-beab-4318-aae5-d0f862209744
сохранить как
24 июл 20, 17:21    [22173325]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
катастрофа
Member

Откуда:
Сообщений: 3173
Leonid Kudryavtsev, спасибо, опробую
24 июл 20, 18:04    [22173351]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
volodin661
Member

Откуда: Внутренняя Монголия
Сообщений: 505
катастрофа,

with open('file.txt') as f:
  lis = [x.rstrip('\n').split(';') for x in f]

for x in zip(*lis):
  for y in x:
    print(y+';', end='')
  print('\n')


Сообщение было отредактировано: 22 окт 20, 03:11
22 окт 20, 03:06    [22218666]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
miltorg
Member [заблокирован]

Откуда: Калининград
Сообщений: 764
катастрофа,

#!/usr/bin/perl

$_=q~00ID;Name;Price
01;Chairs;$40.00
02;Table;$75.00
03;Fork;$1.50~;

@u = /^.+?;/gm;

print @u;
22 окт 20, 08:18    [22218706]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
miltorg
Member [заблокирован]

Откуда: Калининград
Сообщений: 764
катастрофа,

<?php

$_=<<<HTML
00ID;Name;Price
01;Chairs;$40.00
02;Table;$75.00
03;Fork;$1.50

HTML;

preg_match_all('/^.+?;/m', $_, $u);

print implode("", $u[0]);
22 окт 20, 09:21    [22218728]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
miltorg
Member [заблокирован]

Откуда: Калининград
Сообщений: 764
катастрофа,

#include <iostream>
#include <string>
#include <regex>
using namespace std;

int main(){
  string u; float oc; int i;


u=R"HTML(
00ID;Name;Price
01;Chairs;$40.00
02;Table;$75.00
03;Fork;$1.50
)HTML";

regex space_re(R"(\n.+?;)");
 for(auto t= sregex_token_iterator(u.begin(),u.end(),space_re); t!= sregex_token_iterator(); ++t){
     string  v =*t;
  cout << v;
  }





  return 0;
  }
23 окт 20, 04:45    [22219223]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
miltorg
Member [заблокирован]

Откуда: Калининград
Сообщений: 764
Так вроде красивей:

#include <iostream>
#include <string>
#include <regex>
using namespace std;

int main()
{
    
      string u;


u=R"HTML(
00ID;Name;Price
01;Chairs;$40.00
02;Table;$75.00
03;Fork;$1.50
)HTML";
    
    regex space_re(R"(\n.+?;)");
for(auto t= sregex_token_iterator(u.begin(),u.end(),space_re); t!= sregex_token_iterator(); ++t){
     string  v =*t;
     v = regex_replace(v, regex (R"(\n)"),"");
  cout << v;
  }


}
23 окт 20, 05:25    [22219226]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
miltorg
Member [заблокирован]

Откуда: Калининград
Сообщений: 764
Ну и в конце на Java:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class out {
  public static void main(String[] args){
    String u = null; float oc; int i;


u="\n" +
"00ID;Name;Price\n" +
"01;Chairs;$40.00\n" +
"02;Table;$75.00\n" +
"03;Fork;$1.50"

  Pattern pattern = Pattern.compile("\\n.+?;");
    Matcher matcher = pattern.matcher(u);
    while(matcher.find()){
    String  v  = matcher.group();

  
    System.out.print( v);
  }

  }
}
23 окт 20, 07:09    [22219234]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
miltorg,

Запускать-то пробовали?
23 окт 20, 09:58    [22219292]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
miltorg
Member [заблокирован]

Откуда: Калининград
Сообщений: 764
env,

Да.
23 окт 20, 10:24    [22219313]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
miltorg,

Тогда зачем приводить код, не решающий задачу? Код на си не делает транспонирования, а просто печатает первую группу в строке.
23 окт 20, 10:31    [22219319]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
на самом деле проблема тянется от исходного решения на perl, которое тоже не решает задачу
23 окт 20, 10:38    [22219321]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
miltorg
Member [заблокирован]

Откуда: Калининград
Сообщений: 764
env
miltorg,

Тогда зачем приводить код, не решающий задачу? Код на си не делает транспонирования, а просто печатает первую группу в строке.


Смотрим исходное:
автор
ну или получить например первый столбец - 00ID;01;02;03 без цикла


Задача чётко выполнена по минимальному варианту.
23 окт 20, 10:57    [22219331]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
miltorg,

Ваше решение на си не транспонирует первый столбец, задача не выполнена даже по минимальному варианту.
23 окт 20, 11:10    [22219342]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
miltorg
Member [заблокирован]

Откуда: Калининград
Сообщений: 764
env
miltorg,

Ваше решение на си не транспонирует первый столбец, задача не выполнена даже по минимальному варианту.


00ID;01;02;03 - это выводит?
23 окт 20, 11:12    [22219343]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
miltorg,

нет, выводит столбец
23 окт 20, 11:17    [22219350]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
miltorg
Member [заблокирован]

Откуда: Калининград
Сообщений: 764


К сообщению приложен файл. Размер - 46Kb
23 окт 20, 11:17    [22219351]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
miltorg
Member [заблокирован]

Откуда: Калининград
Сообщений: 764
env
miltorg,

нет, выводит столбец


А. Всё понял. Вы и условие не прочитали. И все ответы - не прочитали.
Воистину нельзя вывешивать недоделанную работу.
Окончательный код:

#include <iostream>
#include <string>
#include <regex>
using namespace std;

int main()
{
    
      string u;


u=R"HTML(
00ID;Name;Price
01;Chairs;$40.00
02;Table;$75.00
03;Fork;$1.50
)HTML";
    
    regex space_re(R"(\n.+?;)");
for(auto t= sregex_token_iterator(u.begin(),u.end(),space_re); t!= sregex_token_iterator(); ++t){
     string  v =*t;
     v = regex_replace(v, regex (R"(\n)"),"");
  cout << v;
  }


}
23 окт 20, 11:20    [22219354]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
miltorg
Member [заблокирован]

Откуда: Калининград
Сообщений: 764
Он в этом 22219226 сообщении
23 окт 20, 11:21    [22219356]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
miltorg
Member [заблокирован]

Откуда: Калининград
Сообщений: 764
import re

u='''
00ID;Name;Price
01;Chairs;$40.00
02;Table;$75.00
03;Fork;$1.50
'''

for  v  in re.findall(r'(?<=\n).+?;', u):
  print (v, end='')
23 окт 20, 17:00    [22219673]     Ответить | Цитировать Сообщить модератору
 Re: Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6727
miltorg,

golang может тогда ещё?
23 окт 20, 17:06    [22219678]     Ответить | Цитировать Сообщить модератору
Все форумы / Вопрос-Ответ Ответить