Иногда требуется преобразовать строку в целое число или в число с плавающей точкой для осуществления определённых операций в Python.
Если вы попробуете выполнить то или иное действие со строкой в виде чисел, то получите ошибку.
Этот код приведёт к ошибке:
str_a = ’50’ b = 10 c = str_a + b print (c)
В Python можно использовать функции int и float для преобразования строки в целое число или число с плавающей точкой до осуществления каких-либо операций.
Рассмотрим следующий код:
str_a = '50' b = 10 c = int(str_a) + b print ("The value of c = ",c)
В результате его работы выведется значение переменной c, представляющее собой сумму переменных str_a и b.
Можно использовать класс float для преобразования строки в число с плавающей точкой.
Пример использования float для преобразования строки:
#Пример преобразования string во float str_a = '50.85' b = 10.33 c = float(str_a) + b print ("The value of c = ",c)
Замечание: если вы попытаетесь использовать здесь функцию int(), то получите ошибку.
Если нужно преобразовать строки из чисел, содержащиеся в списке, тогда используйте генератора списков.
Будет создан новый список, в котором можно применить функцию int в каждой итерации.
Код:
#Пример преобразования string в int в списке str_lst = ['1', '2', '3'] int_lst = [int(x) for x in str_lst] print (int_lst)
Будет выведен новый список, состоящий из целых чисел, полученных из строк.
Аналогичным образом можно использовать float вместо int для преобразования списка, содержащего строки из целых чисел. Рассмотрим пример:
Код для преобразования элементов списка в числа с плавающей точкой:
#Пример преобразования string во float в списке str_lst = ['10.505', '2.3', '3.99'] float_lst = [float(x) for x in str_lst] print (float_lst)
Ну а как насчёт строки наподобие “5,000,000”? Если попытаетесь преобразовать ее, используя функции int() или float(), то получите ошибку.
Решением будет использование import locale. Например:
locale.setlocale(locale.LC_ALL, ‘en_US.UTF-8’ )
Но это может вызвать проблемы в остальных локалях. Другое решение заключается в том, чтобы заменить запятые пустыми строками, то есть“”, а затем использовать функцию int.
Код:
str_a = '5,123,000' int_b = int(str_a.replace(',','')) print ("The integer value",int_b)
В результате получаем целое значение. Это же решение можно применить для конвертации строки в число с плавающей точкой.
Пользовательский ввод в Python- программах воспринимается как строка. В следующем примере пользователя просят ввести год. После ввода значения программа сообщает, високосный это год или нет.
Для этого введённое значение сначала преобразуется в целое число, а затем используется формула расчёта високосного года.
#Пример расчёта високосного года try: Y = int(input("Enter a Year? ")) exceptValueError: print ("You may only enter digits in '2000' format!") else: leap_or_not = Y%4 == 0 ifleap_or_not: print ("Leap year") else: print ("Not a leap year")
Вводимая строка сразу преобразуется в целое число, а затем используется для расчёта.
Для преобразования целых чисел в строки в Python можно использовать функцию str(). Функция str() принимает объект, который может быть типа int, float, double и т.п.
Рассмотрим пример преобразования переменной типа int в строку, которая затем используется как строка для конкатенации:
#Примерпреобразованияint в string a_string = "str function for int to string" a_num = 456 print (a_string + str(a_num))
Вывод:
str function for int to string456
Если бы целочисленная переменная была использована без функции str(), возникла бы ошибка TypeError.
Данная публикация представляет собой перевод статьи «5 examples to Convert a Python string to int and float» , подготовленной дружной командой проекта Интернет-технологии.ру
www.internet-technologies.ru
Строка — примитивный тип данных в языке программирования 1С. Помимо 1С, этот тип данных используется во всех известных языках программирования, обычно он называется «string».
Рассмотрим основные функции встроенного языка программирования 1С.
Функция Строка() позволяет получить текстовое представление переменных других типов.
Пример:
Строка(ТекущаяДата()) //"23.02.2015 21:31:24" Строка(Истина) // Да Строка(1058) // "1 058"
Функция позволяет получить количество символов в строке 1C, включая пробелы и незначащие символы.
Например:
СтрДлина("Тестовая строка") // 15
Полезная функция для удаления незначащих символов в строковом значении. СокрЛ обрабатывает символы, стоящие слева от последнего значащего символа, СокрП — справа. А СокрЛП — справа и слева.
Пример:
СокрЛП(" Слева и справа есть незначащие символы - пробелы ") // получим строку без пробелов слева и справа
Помимо пробелов, функция 1C удаляет такие символы, как перенос строки, неразрывный пробел и т.д.
С помощью данных функций очень просто получить первые (Лев) или последние (Прав) символы в строке, а также произвольное количество символов (Сред).
Пример:
Лев("Тестовая строка", 4) // "Тест" Сред("Тестовая строка", 5, 6) // "овая с"
Функция для поиска подстроки внутри другой подстроки. Синтаксис Найти(<Строка для поиска>, <Подстрока поиска>). Функция возвращает число — номер позиции символа (или символов) в исходной подстроке. Если подстроки не найдено, вернётся число 0. Если в искомой подстроке есть несколько вхождений, вернется номер позиции первого совпадения.
Пример:
Найти("Тестовая строка", "строка") // 10 Найти("Тестовая строка", "123") // вернется 0, подстроки "123" нет в исходной строке Найти("Тестовая строка", "я") // 8
Функции для управления регистром строки. ВРег — преобразует строку в верхний регистр. НРег — в нижний. ТРег — у каждого нового слова первая буква преобразуется в верхний регистр, остальные в нижний.
Пример:
ВРег("Тестовая строка") // "ТЕСТОВАЯ СТРОКА" НРег("Тестовая строка") // "тестовая строка" ТРег("Тестовая строка") // "Тестовая Строка"
Функция, позволяющая сравнить исходную строку с пустой строкой. Проверяется наличие незначащих символов.
Пример:
Получите 267 видеоуроков по 1С бесплатно:
ПустаяСтрока("Тест") //ложь ПустаяСтрока(" ") // истина
Аналогично можно проверить строку на пустое значение следующим образом:
СокрЛП(" ") = "" // истина
Функция СтрЗаменить позволяет массово заменить искомое значение на нужное нам. Синтаксис:
Например:
СтрЗаменить("Произвольная Строка", " " , "") //"ПроизвольнаяСтрока"
Позволяет получить количество строк в многострочном тексте. Функция считает количество переносов строк (Символы.ПС).
Например, построчная обработка текстового фрагмента:
Для Н=1 по СтрЧислоСтрок(ТекстФайла) Цикл ..... КонецЕсли;
С помощью данной функции можно получить произвольную строку из многострочного текста. Синтаксис — СтрПолучитьСтроку(<Строка>, <Номер строки>).
Пример:
СтрокаНомер5 = СтрПолучитьСтроку(ИсходнаяСтрока, 5)
Функция для подсчета числа вхождений произвольного фрагмента в строку. Например, подсчитать количество вхождений определенных символов или слов в текст.
Пример:
СтрЧислоВхождений ("Тестовая строка", "т") // 2
Две обратные функции. С помощью КодСимвола можно получить код символа в кодировке Unicode. Функцией Символ можно получить символ, зная Unicode кодификатор.
Примеры:
КодСимвола("Т") // 1 058 Символ(1058) // "Т"
Рассмотрим классические примеры решения задач в работе с текстовыми переменными.
Конкатенация, или объединение строк в 1С делается оператором «+».
Например:
"Первая часть строки " + "и вторая" // получим "Первая часть строки и вторая"
Тут всё просто. Достаточно использовать метод «Строка()»:
Строка(12355.44) // "12 355,44"
Однако может смущать наличие неразрывного пробела.
Его можно убрать с помощью замены неразрывного пробела на пустую строку:
СтрЗаменить(Строка(12355.44),Символы.НПП,"") // "12355,44"
или с помощью метода Формат:
Строка(Формат(12355.44,"ЧГ="))
Для новичков достаточно трудно установить кавычки внутри строки, хотя в этом нет ничего сложного. Достаточно внутри строки поставить вместо одних кавычек двое.
Например:
Строка("Наша организация называется ""Березка"", мы работаем на рынке с 1999 года")
Символ переноса строки необходим для переноса строки на следующую строку. В 1С это можно сделать с помощью специальной конструкции «Символы.ПС».
Пример:
"Этот текст будет на первой строке" + Символы.ПС + "А этот на второй"
Однако для получения корректного сравнения часто требуется возвести строки в один регистр и убрать незначащие символы:
СокрЛП(ВРег(Строка1)) = СокрЛП(ВРег(Строка2))
Таким образом, мы получим более точное сравнение двух строк.
Достаточно часто нужно убрать пробелы в строке 1С.
Если требуется убрать пробелы справа и слева:
ИсходнаяСтрока = СокрЛП(ИсходнаяСтрока)
Если требуется убрать абсолютно все пробелы, можно заменить их на пустую строку:
ИсходнаяСтрока = СтрЗаменить(ИсходнаяСтрока, " " ,"")
Если требуется убрать неразрывные пробелы из строки, которая получена из числового типа, сделать это можно так:
ИсходнаяСтрока = СтрЗаменить(ИсходнаяСтрока, Символы.НПП ,"")
Другие статьи по 1С:
Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
programmist1s.ru
&НаКлиенте Процедура ВыполнитьКод(Команда) /// Как найти длину строки в 1с 8.3, 8.2 Сообщить(СтрДлина("123456789")); // 9 /// Как взять часть строки в 1с 8.3, 8.2 // как взять N символов слева Строка = "Иван Грозный"; Сообщить(Лев(Строка, 4)); // Иван // как взять N символов справа Строка = "Иван Грозный"; Сообщить(Прав(Строка, 7)); // Грозный // как взять строку из середины Строка = "Мама, папа, я."; // возьмём начиная с 7 индекса 4 символа Сообщить(Сред(Строка, 7, 4)); // папа /// Как найти подстроку в 1с 8.3, 8.2 Строка = "Привет, мир!"; Индекс = Найти(Строка, "Привет"); // 1, строки индексируются с единицы /// Как узнать число вхождений подстроки в строку в 1с 8.3, 8.2 Сообщить(СтрЧислоВхождений("я, я и ещё раз я.", "я")); // 3 /// Как заменить подстроку в строке в 1с 8.3, 8.2 Сообщить(СтрЗаменить("Идёт сильный дождь.", "дождь", "снег")); /// Как проверить на пустую строку в 1с 8.3, 8.2 Если ПустаяСтрока(" ") Тогда Сообщить("Строка пустая, то есть не содержит значащих символов."); КонецЕсли; /// Как удалить незначащие символы из строки в 1с 8.3, 8.2 // слева Сообщить(СокрЛ(" из лесу ёлочку ")); // "из лесу ёлочку " // справа Сообщить(СокрП(" из лесу ёлочку ")); // " из лесу ёлочку" // с двух сторон Сообщить(СокрЛП(" из лесу ёлочку ")); // "из лесу ёлочку" /// Как вставить в строку перенос в 1с 8.3, 8.2 Строка = "Первая строка" + Символы.ПС + "Вторая строка" + Символы.ПС + "Третья строка"; /// Как работать с многострочными строками (нумерация с /// единицы) в 1с 8.3, 8.2 Сообщить(СтрЧислоСтрок(Строка)); // 3 Сообщить(СтрПолучитьСтроку(Строка, 2)); // "Вторая строка" /// Верхний, нижний и титульный регистры в 1с 8.3, 8.2 Сообщить(ВРег("россия - родина моя!")); // РОССИЯ - РОДИНА МОЯ! Сообщить(НРег("МИР, ТРУД, МАЙ!")); // мир, труд, май Сообщить(ТРег("мама мыла раму")); // Мама Мыла Раму /// Как получить код символа строки в 1с 8.3, 8.2 // код отдельного символа: // туда Сообщить(КодСимвола("A")); // 65 // и обратно Сообщить(Символ(65)); // "A" // код третьего символа в строке Сообщить(КодСимвола("ABC", 3)); //67 // код первого символа в строке КодПервогоСимволаФамилии = КодСимвола("Грозный"); Сообщить(КодПервогоСимволаФамилии); // 1043, потому что Unicode. /// Как преобразовать строку в число в 1с 8.3, 8.2 Сообщить(Число("125.36")); // 125,36 Сообщить(Число("125,36")); // 125,36 /// Как преобразовать число в строку в 1с 8.3, 8.2 Сообщить(25 + "10"); // 35 // если же нужно сложить число и строку как строки Сообщить(Строка(25) + "10"); // 2510 /// Как разбить строку с разделителями в 1с 8.3, 8.2 Разделитель = ","; Строки = СтрЗаменить("январь, февраль, март", Разделитель, Символы.ПС); Для Индекс = 1 По СтрЧислоСтрок(Строки) Цикл Сообщить(СтрПолучитьСтроку(Строки, Индекс)); КонецЦикла; КонецПроцедуры &НаСервереБезКонтекста Процедура ВыполнитьКодНаСервере() /// Как сериализовать значение в строку в 1с 8.3, 8.2 Массив = Новый Массив(3); Массив[0] = 1; Массив[1] = "Земля"; Массив[2] = 3.14; Стр = ЗначениеВСтрокуВнутр(Массив); Сообщить(Стр); //{"#",51e7a0d2-530b-11d4-b98a-008048da3034, // {3, // {"N",1}, // {"S","Земля"}, // {"N",3.14} // } //} /// Как десериализовать значение из строки в 1с 8.3, 8.2 МассивКопия = ЗначениеИзСтрокиВнутр(Стр); Элемент = МассивКопия[1]; Сообщить(Элемент); // Земля КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере |
helpme1c.ru