Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
0 / 0 / 1
Регистрация: 18.05.2015
Сообщений: 30

Считать строки из csv файла, все слова заключить в кавычки и разделить запятой. Рез. записать в текстовый файл

28.12.2015, 18:21. Показов 4394. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, столкнулся со следующего рода проблемой, Нужно считать строки из csv файла, все слова заключить в кавычки и разделить запятой. Результат записать в текстовый файл. В csv файле ячейки разделены ; Написал программу которая делает следующее: например( мама; папа; брат) выводит ("мама","папа","брат"), но если я напечатаю в csv файле (мама; папа; брат дядя), то оно выведет ("мама","папа","братдядя"), а нужно ("мама","папа","брат","дядя") вот код программы:
C#
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
28
private static void Main(string[] args)
        {
 
            try
            {
                StreamReader f = new StreamReader("my.csv");
                StreamWriter fw = new StreamWriter("my.txt");
                while (!f.EndOfStream)
                {
                    string str = f.ReadLine();
                    Console.WriteLine(str);
                    str = str.Replace(" ", "");
                    string strout = str.Replace(";", "","");
                    strout = """ + strout + """;
                    fw.WriteLine(strout);
                    Console.WriteLine(strout);
 
                }
                f.Close();
                fw.Close();
            }
            catch (FileNotFoundException e)
            {
                Console.WriteLine(e.Message);
            }
 
            Console.ReadKey();
        }
Помогите пожалуйста, срочно нужно
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.12.2015, 18:21
Ответы с готовыми решениями:

Дан текстовый файл g. Создать новый файл f и записать в него все слова файла g с количеством символов больше 4 и меньш 6
Дан текстовый файл g. Создать новый файл f и записать в него все слова файла g с количеством символов >4 и <6, в которых нет...

Дан текстовый файл. Записать в отдельный файл все симметричные строки исходного файла, являющиеся отдельными предложения
Работа с файлами и строками,если можно,то напишите код,а если можно,то ещё с объяснениями

Разделить слова в текстовом файле запятой, и взять каждое слово в кавычки
Из текстового файла выделить слова и записать их в другой текстовый файл, разделив слова запятой и взяв каждое слово в кавычки.

20
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
28.12.2015, 18:43
C#
1
2
3
4
5
6
7
8
9
10
11
12
string templ = "\"\"";
try
{
    string textFromFile = File.ReadAllText(@"d:\my.csv", Encoding.Default);
    string[] words = textFromFile.Split(new char[] { ';', ' ' }, StringSplitOptions.RemoveEmptyEntries);
    string[] linesToFile = words.Select(x => templ.Insert(1, x)).ToArray();
    File.WriteAllLines(@"d:\my.txt", linesToFile, Encoding.Default);
}
catch (Exception exp)
{
    Console.WriteLine(exp.Message);
}
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
28.12.2015, 18:44
Цитата Сообщение от ar4ipers Посмотреть сообщение
Нужно считать строки из csv файла, все слова заключить в кавычки и разделить запятой.
C#
1
2
3
4
5
string [] linesCSV = File.ReadAllLines("1.csv", Encoding.GetEncoding(1251));
 
string[] newlinesCSV = linesCSV.Select(x => string.Join(",", x.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Select(y =>  @"""" + y + @""""))).ToArray();
 
File.WriteAllLines("2.csv", newlinesCSV, Encoding.GetEncoding(1251));
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
28.12.2015, 18:51
Блин, про запятые забыл. Сейчас исправлюсь.

Добавлено через 3 минуты
C#
1
2
3
4
5
6
7
8
9
10
11
12
string templ = "\"\"";
try
{
    string textFromFile = File.ReadAllText("my.csv", Encoding.Default);
    string[] words = textFromFile.Split(new char[] { ';', ' ' }, StringSplitOptions.RemoveEmptyEntries);
    string textToFile = string.Join("," , words.Select(x => templ.Insert(1, x)).ToArray());
    File.WriteAllText("my.txt", textToFile, Encoding.Default);
}
catch (Exception exp)
{
    Console.WriteLine(exp.Message);
}
1
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
28.12.2015, 18:54
Мб так еще можно.
C#
1
2
3
4
5
string textCSV = File.ReadAllText("1.csv", Encoding.GetEncoding(1251));
 
textCSV = @"""" + textCSV.Replace(";", @""",""") + @"""";
 
File.WriteAllText("2.csv", textCSV, Encoding.GetEncoding(1251));
0
0 / 0 / 1
Регистрация: 18.05.2015
Сообщений: 30
28.12.2015, 19:03  [ТС]
ну почти, только если я беру вот такой текст
(dfgsfg ;sgfsdg;sfdg
sdfg ;



5), то оно выводит
("dfgsfg ","sgfsdg","sfdg
sdfg ","



5"), а должно
("dfgsfg","sgfsdg","sfdg"
"sdfg ","5")
т.е. если переношу на другую строчку слово в одной ячейке, то кавычки между словами не ставятся(
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
28.12.2015, 19:08
Цитата Сообщение от ar4ipers Посмотреть сообщение
только если
Бери без если. А то - в первой строке один формат, во второй - другой. Это уже непорядок. На крайняк порежь лишнее при чтении.
Цитата Сообщение от ar4ipers Посмотреть сообщение
"sdfg ","5")
Причем тут 5?
0
0 / 0 / 1
Регистрация: 18.05.2015
Сообщений: 30
28.12.2015, 19:09  [ТС]
ну почти, только если я беру вот такой текст
(dfgsfg ;sgfsdg;sfdg
sdfg ;



5), то оно выводит
("dfgsfg ","sgfsdg","sfdg
sdfg ","



5"), а должно
("dfgsfg","sgfsdg","sfdg",
"sdfg ","5")
т.е. если переношу на другую строчку слово в одной ячейке, то кавычки между словами не ставятся(
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
28.12.2015, 19:10
Цитата Сообщение от ar4ipers Посмотреть сообщение
переношу на другую строчку слово в одной ячейке
Ты вообще в курсе, что такое csv?
0
0 / 0 / 1
Регистрация: 18.05.2015
Сообщений: 30
28.12.2015, 19:12  [ТС]
5 я печатаю через 3 строчки, вот на этом преподаватель и подловил

Добавлено через 1 минуту
я то в курсе, только вот преподаватель требует так, тупейшая ситуация
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
28.12.2015, 19:12
Цитата Сообщение от ar4ipers Посмотреть сообщение
5 я печатаю через 3 строчки, вот на этом преподаватель и подловил
И что из этой фразы я понять должен?
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
28.12.2015, 19:12
ar4ipers,
а в моем варианте тоже?
И, кстати, про скобки ни слова не было сказано.
1
0 / 0 / 1
Регистрация: 18.05.2015
Сообщений: 30
28.12.2015, 19:14  [ТС]
ячейка это образно написал, скажем так называю все что записано между ; текст текст ;

Добавлено через 49 секунд
Не, скобки это типо сам файл, скобки не при чем
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
28.12.2015, 19:16
ar4ipers, скажи преподу, что переносы, скобки - это не csv.
А насчет "5" вообще ничего не понял. Что за дурдом?
Да и формулируй изначально задание корректно, а то у тебя
только после нескольких ответов чакры открываются в плане подробностей.
1
0 / 0 / 1
Регистрация: 18.05.2015
Сообщений: 30
28.12.2015, 19:22  [ТС]
Да, в вашем варианте тоже(

Добавлено через 3 минуты
Извиняюсь тогда, вот такие у нас преподаватели, если я ввожу
рвапва;рвапва




рвапва
то на выходе должно быть
"рвапва","рвапва",




"рвапва"
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
28.12.2015, 19:25
ar4ipers,
поменяйте 5-ю строку моего кода на
C#
1
string[] words = textFromFile.Split(new char[] { ';', ' ' ,'\r' , '\n' }, StringSplitOptions.RemoveEmptyEntries);
1
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
28.12.2015, 19:26
Ну тут наверно через регулярки нужно решать.
1
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
28.12.2015, 19:26
Цитата Сообщение от ar4ipers Посмотреть сообщение
то на выходе должно быть
т.е. переносы должны тоже сохраняться?
1
0 / 0 / 1
Регистрация: 18.05.2015
Сообщений: 30
28.12.2015, 19:41  [ТС]
да, и это тупо

Добавлено через 12 минут
Да, должны сохранятся, с регулярными выражениями совсем не дружу(
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
28.12.2015, 19:57
Лучший ответ Сообщение было отмечено ar4ipers как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
string templ = "\"\"";
try
{
    string[] linesFromFile = File.ReadAllLines("my.csv", Encoding.Default);
    using (StreamWriter fw = new StreamWriter("my.txt", false, Encoding.Default))
    {
        for (int i = 0; i < linesFromFile.Length; i++)
        {
            string[] words = linesFromFile[i].Split(new char[] { ';', ' ', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
            string lineToFile = string.Join(",", words.Select(x => templ.Insert(1, x)).ToArray());
            if (i != linesFromFile.Length - 1 && lineToFile!=string.Empty)
                lineToFile += ",";
            fw.WriteLine(lineToFile);
        }
    }
}
catch (Exception exp)
{
    Console.WriteLine(exp.Message);
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.12.2015, 19:57
Помогаю со студенческими работами здесь

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

Дан текстовый файл F и строка S. посчитать кол-во строк совпадающих со строкой S и рез-т записать в файл G
Дан текстовый файл F и строка S. посчитать кол-во строк совпадающих со строкой S и рез-т записать в файл G. Заранее спасибо!

Дан входной текстовый файл, строка S (вводится с клавиатуры). Записать в выходной файл все строки входного файла, содержащие в качестве фрагмента стро
Дан входной текстовый файл, строка S (вводится с клавиатуры). Записать в выходной файл все строки входного файла, содержащие в качестве...

Дан текстовый файл и слово. Выведите все строки файла, начинающиеся с заданного слова
Дан текстовый файл и слово. Выведите все строки файла, начинающиеся с заданного слова. Подскажите, пожалуйста, что не так сделала? Не...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru