Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2018, 09:23   #1
Tik-Tik
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 45
По умолчанию Помогите распарсить текстовый файл

нужно из файла .txt вытащить все cтроки которые повторяются не меньше 2ух раз остальное удалить и удалить все строки которые состоят не из английских букв и цифр удаляем строку
в файл .txt вот такой вот фотрмат списка
fdsfsdffsdf
fsfsdfsdf
fdsfsdf
fdsfsdfsdf
fsdfsdfsdf
помогите пожалуйста
Tik-Tik вне форума Ответить с цитированием
Старый 21.02.2018, 10:38   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Чем помочь то?
Что сделали, что не получается?
На каком ЯВУ программируете?

не всё понятно.

Цитата:
Сообщение от Tik-Tik Посмотреть сообщение
вытащить все cтроки которые повторяются не меньше 2ух
и оставить их столько раз, сколько они повторились?

Цитата:
Сообщение от Tik-Tik Посмотреть сообщение
и удалить все строки которые состоят не из английских букв и цифр
например, если в строке есть ОДИН символ, которые не является английской буквой или цифрой, эту строку удалять?
А если этот символ символ " " (пробел) или знак пунктуации?

ок.
Пусть дан список
Код:
z1
  z22
z33
z1
z22
z1
z z
a1
a--a
a2

a2

z1
пример1
a2
---------------------

что должно получиться в результате?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.02.2018, 10:40   #3
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

1. объявить столько строковых переменных, сколько строк. присваиваем переменным строки. короче, массив строк.
2. цикл. сравниваем N-ю строку со всеми остальными. тут же в цикле счётчик, который увеличивается на 1, если среди остальных находится хотя бы одна похожая.
3. в конце, когда нашли похожие, проверка по коду символов, есть ли в строке символы с кодом более 127(или по таблице кодов глянь, там цифры и кириллические буквы с какого номера начинаются)
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 21.02.2018, 11:54   #4
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию

1. Отсортировать
2. Пропустить через uniq -c
3. Из результата uniq выбрать те, которые встречаются по одному разу
4. Одиночные строки в цикле удалить grep-ом или сделать скрипт для sed-а
СтудПом вне форума Ответить с цитированием
Старый 21.02.2018, 12:29   #5
Tik-Tik
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 45
По умолчанию

строки такова типа файлы больше 100мб
dssdsfsdfsf
dssfs112
sdfsdfsdf
dsfdsfs212321
324234
sdfsdfffsd
fdsfsdfsdf
fsdfsdfsffs
+32 вы^& ? такую сроку удаляем
Цитата:
например, если в строке есть ОДИН символ, которые не является английской буквой или цифрой, эту строку удалять?
А если этот символ символ " " (пробел) или знак пунктуации?
все что не анг буква или цифра строку удаляем


получится долно так
dssdsfsdfsf
dssfs112
sdfsdfsdf
dsfdsfs212321
324234
sdfsdfffsd
fdsfsdfsdf

Последний раз редактировалось Tik-Tik; 21.02.2018 в 12:34.
Tik-Tik вне форума Ответить с цитированием
Старый 21.02.2018, 13:19   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

понятно.

Цитата:
Сообщение от Tik-Tik Посмотреть сообщение
строки такова типа файлы больше 100мб
их придётся грузить в память.
но, думаю, что это не проблема.

а почему Вы не ответили на другие мои вопросы?


Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Чем помочь то?
Что сделали, что не получается?
На каком ЯВУ программируете?
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
и оставить их столько раз, сколько они повторились?
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Пусть дан список
...
что должно получиться в результате?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.02.2018, 13:29   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
CREATE FUNCTION uf_IsLatinAndNumber (@s varchar(100)) RETURNS tinyint AS
BEGIN
  DECLARE @i int,@k int,@t int
  SELECT @i=1,@k=LEN(@s)
  WHILE @i<=@k BEGIN
    SET @t=ASCII(SUBSTRING(@s,@i,1))
    IF (@t<48 OR @t>57) AND (@t<65 OR @t>90) AND (@t<97 OR @t>112) BEGIN RETURN(0) END
    SET @i=@i+1
  END
  RETURN(1)
END

--DROP TABLE #TempTable
CREATE TABLE #TempTable (f1 varchar(100) NULL)
BULK INSERT #TempTable FROM 'здесь полное имя файла' WITH (CODEPAGE = 1251)
SELECT f1 FROM #TempTable WHERE f1 IS NOT NULL AND dbo.uf_IsLatinAndNumber(f1)=1 GROUP BY f1 HAVING COUNT(*)>1
Цитата:
вытащить все cтроки которые повторяются не меньше 2ух раз остальное удалить и удалить все строки которые состоят не из английских букв и цифр удаляем строку
в примере из #5 нет ни одной повторяющейся строки. согласно условия в результате должно быть 0 строк ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 21.02.2018 в 13:34.
Аватар вне форума Ответить с цитированием
Старый 21.02.2018, 13:42   #8
Tik-Tik
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 45
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
[CODE]CREATE FUNCTION uf_IsLatinAndNumber (@s varchar(100)) RETURNS tinyint AS
BEGIN
DECLARE @i int,@k int,@t int
SELECT @i=1,@k=LEN(@s)
спасибо вам большое
а что это за язык ?)
или это батник можно создать?
а в прмере номер #5 То поросто пример
на самом деле там 100мб сток (

Последний раз редактировалось Tik-Tik; 21.02.2018 в 13:45.
Tik-Tik вне форума Ответить с цитированием
Старый 21.02.2018, 13:44   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Тебе же без разницы какой язык )) Это скрипт для MS SQL
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.02.2018, 13:48   #10
Tik-Tik
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 45
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Тебе же без разницы какой язык )) Это скрипт для MS SQL
а как запустить ?
первый раз с таким сталкиваюсь

Последний раз редактировалось Tik-Tik; 21.02.2018 в 13:56.
Tik-Tik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
распарсить текстовый файл и получить массив вида array( “(0:00)”=>“text1”,“(0:30)”=>“text2” ) cheburashkaRF PHP 5 15.08.2016 23:48
Как распарсить файл *.txt в access. VladimirC2004 Microsoft Office Access 5 06.11.2011 15:20
Помогите с 2-мя задачами на тему текстовый файл. aleksandrdss Помощь студентам 1 12.04.2009 00:20
Помогите с 2-мя задачами на тему текстовый файл. aleksandrdss Помощь студентам 0 11.04.2009 04:02