Объединить списки

fri-lancer

Client
Регистрация
01.10.2013
Сообщения
410
Благодарностей
155
Баллы
43
Есть три списка в каждом по 100 строк, я из них беру данные, ложу в переменные, подскажите как их объединить в один текстовый файл в таком формате: {-Variable.str_1-};{-Variable.str_2-};{-Variable.str_3-}
 

black_pariah

Client
Регистрация
08.09.2014
Сообщения
294
Благодарностей
90
Баллы
28
Есть три списка в каждом по 100 строк, я из них беру данные, ложу в переменные, подскажите как их объединить в один текстовый файл в таком формате: {-Variable.str_1-};{-Variable.str_2-};{-Variable.str_3-}
с каждого списка по строке берёте и складываете в нужный список ,дописать строку {-Variable.str_1-};{-Variable.str_2-};{-Variable.str_3-}
 

fri-lancer

Client
Регистрация
01.10.2013
Сообщения
410
Благодарностей
155
Баллы
43
с каждого списка по строке берёте и складываете в нужный список ,дописать строку {-Variable.str_1-};{-Variable.str_2-};{-Variable.str_3-}
сейчас записалось в список:
текст 1
текст 2
текст 3
а мне нужно чтобы было так:
текст 1;текст 2;текст 3
 

black_pariah

Client
Регистрация
08.09.2014
Сообщения
294
Благодарностей
90
Баллы
28
сейчас записалось в список:
текст 1
текст 2
текст 3
а мне нужно чтобы было так:
текст 1;текст 2;текст 3
берёте текст 1,берёте текст 2,берёте текст 3,а в список кладёте так текст 1;текст 2;текст 3 ,если так и делаете,а в строку не складывает всё равно ,значит разделитель строк в списке у вас ; такой,поменяйте разделитель на другой и всё заработает,только что проверял.
 
  • Спасибо
Реакции: fri-lancer

fri-lancer

Client
Регистрация
01.10.2013
Сообщения
410
Благодарностей
155
Баллы
43
берёте текст 1,берёте текст 2,берёте текст 3,а в список кладёте так текст 1;текст 2;текст 3 ,если так и делаете,а в строку не складывает всё равно ,значит разделитель строк в списке у вас ; такой,поменяйте разделитель на другой и всё заработает,только что проверял.
Спасибо, заработало.
 

kolllak

Client
Регистрация
16.08.2011
Сообщения
41
Благодарностей
5
Баллы
8
а если списки по 20-30 тыс строк, как их можно быстро свести? построчно муторно
пример:список 1 (строки ID), список 2 (name), список 3 (time)
а нужно один со строкой типа
"ID";"name";"time"

или может есть вариант почистить список такого типа сразу?:
ID
name
time
ID
name
time
ID
name
time

заменой не за что зацепится
 

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 391
Благодарностей
479
Баллы
83
в каком смысле муторно?

а если списки по 20-30 тыс строк, как их можно быстро свести? построчно муторно
пример:список 1 (строки ID), список 2 (name), список 3 (time)
а нужно один со строкой типа
"ID";"name";"time"
Я так и не понял почему не сделать так как написано выше - брать построчно с удалением данные и прописывать в итоговый список
 
Последнее редактирование:

kolllak

Client
Регистрация
16.08.2011
Сообщения
41
Благодарностей
5
Баллы
8
Ribas
потому как к примеру чистка общего массива автозаменой займет 1минуту, а сведение построчно час и больше
автозаменой просто возможно когда формат таков:
<id="">ID</id>
"name"
<a href>time</a>
<id="">ID</id>
"name"
<a href>time</a>ID
<id="">ID</id>
"name"
<a href>time</a>
т.е. есть любое уникальное окружение к которому можно прицепится
3-4 замены и сохраняем массив в файл csv - все операция выполнена практически моментально. А если построчно - муторно - самое мягкое слово из моего лексикона

вот и спрашиваю - вдруг есть варианты в скриптах или С++ которые позволят обработать список переменных и без окружения, только на закономерностях в последовательности, или на масках
 
Последнее редактирование:

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 106
Баллы
113
вот и спрашиваю - вдруг есть варианты в скриптах или С++ которые позволят обработать список переменных и без окружения, только на закономерностях в последовательности, или на масках
Для одного списка (строки из него удаляются):
ID
name
time
...
Код:
var list = project.Lists["SourceList"];
var result = project.Lists["Result"];
lock(SyncObjects.ListSyncer)
{
    for (int i = 0; i < list.Count;)
        {
            string str1 = list[i];
                list.RemoveAt(i);
            string str2 = list[i];
                list.RemoveAt(i);
            string str3 = list[i];
                list.RemoveAt(i);
        
            result.Add(str1 + ";" + str2 + ";" + str3); // в кавычках любой разделитель
        }
}
 
Последнее редактирование:

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 106
Баллы
113
Для трех списков IDs , Names, Time (строки берутся с удалением):
Код:
var list1 = project.Lists["ListIDs"];
var list2 = project.Lists["ListNames"];
var list3 = project.Lists["ListTime"];
var result = project.Lists["Result"];
lock (SyncObjects.ListSyncer)
{
    for (int i = 0; i < list1.Count;)
        {
            string ID = list1[i];
                list1.RemoveAt(i);
            string name = list2[i];
                list2.RemoveAt(i);
            string time = list3[i];
                list3.RemoveAt(i);
        
            result.Add(ID + ";" + name + ";" + time); // в кавычках любой разделитель
        }
}
Вариант без удаления строк из исходных списков:
Код:
var list1 = project.Lists["ListIDs"];
var list2 = project.Lists["ListNames"];
var list3 = project.Lists["ListTime"];
var result = project.Lists["Result"];
lock (SyncObjects.ListSyncer)
{
    for (int i = 0; i < list1.Count; i++)
        {
            string ID = list1[i];
            string name = list2[i];
            string time = list3[i];
        
            result.Add(ID + ";" + name + ";" + time); // в кавычках любой разделитель
        }
}
 
Последнее редактирование:

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 391
Благодарностей
479
Баллы
83
Ribas
потому как к примеру чистка общего массива автозаменой займет 1минуту, а сведение построчно час и больше
Странно, но я вот проверил - у меня три списка, в кажом 34к строк, склеились в один примерно за 10 секунд стандартными кубиками, а та же замена стандартным кубиком (правда поиск по регулярке) в массиве - ну ооочень долго происходит. А вот шарпом такая замена проходит быстро.
 

kolllak

Client
Регистрация
16.08.2011
Сообщения
41
Благодарностей
5
Баллы
8
Dimionix вот так спасибочки, ну оочень такое большое и серьезное спасибо
нужно учить язык чую, знать бы с какой стороны взяться дабы не тратить лет этак энцать)
 
  • Спасибо
Реакции: Dimionix

Nick

Client
Регистрация
22.07.2014
Сообщения
1 963
Благодарностей
797
Баллы
113
Ещё можно было в Excel просто в три колонки воткнуть и сохранить.
 
  • Спасибо
Реакции: Adigen

material

Client
Регистрация
23.03.2021
Сообщения
260
Благодарностей
79
Баллы
28
Для трех списков IDs , Names, Time (строки берутся с удалением):
Код:
var list1 = project.Lists["ListIDs"];
var list2 = project.Lists["ListNames"];
var list3 = project.Lists["ListTime"];
var result = project.Lists["Result"];
lock (SyncObjects.ListSyncer)
{
    for (int i = 0; i < list1.Count;)
        {
            string ID = list1[i];
                list1.RemoveAt(i);
            string name = list2[i];
                list2.RemoveAt(i);
            string time = list3[i];
                list3.RemoveAt(i);
       
            result.Add(ID + ";" + name + ";" + time); // в кавычках любой разделитель
        }
}
Вариант без удаления строк из исходных списков:
Код:
var list1 = project.Lists["ListIDs"];
var list2 = project.Lists["ListNames"];
var list3 = project.Lists["ListTime"];
var result = project.Lists["Result"];
lock (SyncObjects.ListSyncer)
{
    for (int i = 0; i < list1.Count; i++)
        {
            string ID = list1[i];
            string name = list2[i];
            string time = list3[i];
       
            result.Add(ID + ";" + name + ";" + time); // в кавычках любой разделитель
        }
}
Спасибо тебе из далекого будущего. Вроде 7 лет прошло, а проблемы всё такие же. =)
 
  • Спасибо
Реакции: djaga

happy_lappy

Client
Регистрация
07.03.2022
Сообщения
10
Благодарностей
1
Баллы
3
Для трех списков IDs , Names, Time (строки берутся с удалением):
Код:
var list1 = project.Lists["ListIDs"];
var list2 = project.Lists["ListNames"];
var list3 = project.Lists["ListTime"];
var result = project.Lists["Result"];
lock (SyncObjects.ListSyncer)
{
    for (int i = 0; i < list1.Count;)
        {
            string ID = list1[i];
                list1.RemoveAt(i);
            string name = list2[i];
                list2.RemoveAt(i);
            string time = list3[i];
                list3.RemoveAt(i);
       
            result.Add(ID + ";" + name + ";" + time); // в кавычках любой разделитель
        }
}
Вариант без удаления строк из исходных списков:
Код:
var list1 = project.Lists["ListIDs"];
var list2 = project.Lists["ListNames"];
var list3 = project.Lists["ListTime"];
var result = project.Lists["Result"];
lock (SyncObjects.ListSyncer)
{
    for (int i = 0; i < list1.Count; i++)
        {
            string ID = list1[i];
            string name = list2[i];
            string time = list3[i];
       
            result.Add(ID + ";" + name + ";" + time); // в кавычках любой разделитель
        }
}
работает и в 2023, спасибо!
 
  • Спасибо
Реакции: material

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)