Как из строки достать числа с
Перейти к содержимому

Как из строки достать числа с

  • автор:

Извлечь из строки числа

Дана строка, содержащая натуральные числа и слова. Необходимо сформировать список из чисел, содержащихся в этой строке. Например, задана строка «abc83 cde7 1 b 24». На выходе мы должны получить список [83, 7, 1, 24].

Решение задачи на языке программирования Python

Следует посимвольно перебирать строку. Если очередной символ цифра, надо добавить ее в новую строку. Далее проверять символы за ней, и если они тоже цифры, то добавлять их в конец этой новой подстроки из цифр. Когда очередной символ окажется не цифрой, или будет достигнут конец строки, то надо преобразовать строку из цифр в число и добавить в список.

s = input() length = len(s) integers = [] i = 0 # индекс текущего символа while i  length: s_int = '' # строка для нового числа while i  length and '0'  s[i]  '9': s_int += s[i] i += 1 i += 1 if s_int != '': integers.append(int(s_int)) print(integers) 
5 dkfj78df 9 8 dkfj8 [5, 78, 9, 8, 8]

Обратите внимание, что данное решение извлекает именно числа, а не цифры. Иначе мы бы не получили число 78, а получили отдельно цифру 7 и цифру 8. Задача на извлечение цифр существенно проще.

Решение через цикл for :

a = input() num_list = [] num = '' for char in a: if char.isdigit(): num = num + char else: if num != '': num_list.append(int(num)) num = '' if num != '': num_list.append(int(num)) print(num_list) 

Если в строке числа всегда отделены от слов пробелами, задача решается проще:

s = input() word_list = s.split() num_list = [] for word in word_list: if word.isnumeric(): num_list.append(int(word)) print(num_list) 

Здесь происходит разделение строки на слова по пробелам. В цикле с помощью метода isnumeric каждое слово проверяется, является ли оно числом. Подобную задачу можно решить в одну строку, если использовать функцию filter .

s = input() word_list = s.split() num_list = [int(num) for num in filter( lambda num: num.isnumeric(), word_list)] print(num_list) 

В функцию filter передается лямбда-выражение, проверяющее слова, и список слов. Функция возвращает список строк-чисел. Далее с помощью генератора списка строки преобразовываются в целочисленный тип.

На практике при решении подобных задач, когда надо найти и извлечь из строки что-либо, обычно пользуются регулярными выражениями. В примере ниже не обязательно, чтобы число было отделено пробелами.

import re s = input() nums = re.findall(r'\d+', s) nums = [int(i) for i in nums] print(nums) 

Для поиска вещественных чисел:

import re s = input() nums = re.findall(r'\d*\.\d+|\d+', s) nums = [float(i) for i in nums] print(nums) 

X Скрыть Наверх

Решение задач на Python

Как из строки вытащить числа java

Для извлечения чисел из строки в Java можно использовать регулярные выражения. Для этого можно воспользоваться классом Pattern и Matcher :

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main  public static void main(String[] args)  String str = "abc123def456ghi789"; Pattern pattern = Pattern.compile("\\d+"); Matcher matcher = pattern.matcher(str); while (matcher.find())  System.out.println(matcher.group()); > > > 

В данном примере мы

  • создаем объект Pattern , используя регулярное выражение \d+ , которое означает «один или более цифр»
  • создаем объект Matcher , который будет использоваться для поиска соответствий в строке str
  • используем метод find() для поиска следующего соответствия, и метод group() для получения найденного числа. Метод find() будет продолжать искать числа, пока они есть в строке.

В результате выполнения кода будут выведены следующие числа:

Как выделить числа из строки ?

Как выделять из строки , содержащей пробелы и другие символы , числа и записывать их поочерёдно в массив ?

5 ответов

27 октября 2012 года
6 / / 21.11.2011

#include «stdafx.h»
#include
using namespace std ;

int _tmain ( int argc, _TCHAR * argv [ ] )
<
char * str = «54dgdf5 6hgf1 0hgjgh96 ryre57yt6t» ;
int mas [ 50 ] ;
int n = 0 ;
for ( int i = 0 ; str [ i ] ! = ‘ \0 ‘ ; i ++ )
<
if ( ( str [ i ] >= ‘0’ ) && ( str [ i ] <
mas [ n ] = str [ i ] — ‘0’ ;
n ++ ;
> ;
> ;
printf ( «mas:» ) ;
for ( int i = 0 ; i < n ; i ++ )
<
printf ( » %d» ,mas [ i ] ) ;
> ;
cout system ( «pause» ) ;
return 0 ;
>

27 октября 2012 года
2 / / 27.10.2012
Мне нужны числа , а не все подряд цифры . Например : «99+56-987*5» требуемый массив (99,56,987,5) .
27 октября 2012 года
76 / / 25.07.2012

читаем строку *str и из неё выписываем в другую строку mas[20] подряд идущие цифры
как только появилась нецифра преобразуем строку в число функцией atoi(*str) и полученный результат записываем в int-переменную

29 октября 2012 года
97 / / 15.10.2010
Используй регулярные выражения.
Массив совпадений и будет результирующим массивом.
31 октября 2012 года
874 / / 21.12.2007
#include
#include
#include
#include

using namespace std;

for (string::size_type i = 0; i < s.length(); i++) const char ch = s[i];
if (ch >= ‘0’ && ch <= '9') const int digit = ch - '0';
number = number*10 + digit;
found = true;
>
else if (found) result.push_back(number);

if (found) result.push_back(number);
>
>

int main() vector numbers;
get_numbers(numbers, «54dgdf5 6hgf1 0hgjgh96 ryre57yt6t»);

copy(numbers.begin(), numbers.end(), ostream_iterator(cout, «\n»));
>

Как вытащить число из строки

Author24 — интернет-сервис помощи студентам

Как вытащить из строки сгруппированные данные?
Сервер отправляет данные игроков по сети в виде строки, в которой зашифрованы разные данные, и все.

Как вытащить из строки текстовую часть?
Помогите! Есть строка в Textbox, из нее нужно вытащить текст и вывести в другой текстбокс! Помогите.

Как вытащить ещё часть строки
Всем привет! Есть такой код: string str = ((IEnumerable<string>).

Регулярное выражение: как вытащить n из row[n], где n-целое число
Здравствуйте, как вытащить n из row, где n-целое число

Регистрация: 10.03.2011
Сообщений: 354

Посимвольно просмотреть строку.. и есть определять является ли символ цифрой если да то сохранять..

а потом когда мы отсеяли буквы и осталось число то конвертировать. с помощью

Convert.ToInt32("тут строка содержащая только цифры")

и получим интовое число
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
using System; using System.Linq; using System.Text.RegularExpressions; class Program { static void Main(string[] args) { string[] str = { "fdsg123", "234 fgds*s**d*", "SsTyd %377" }; foreach (string s in str) { int[] matches = Regex.Matches(s, "\\d+") .CastMatch>() .Select(x => int.Parse(x.Value)) .ToArray(); foreach (int match in matches) Console.WriteLine(match); } } }

На этом мои знания Regex закончились

Эксперт Java

4092 / 3826 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11

int r = Convert.ToInt32( Regex.Replace(s, @"[^\d]+", "") );

Вот как бы я решил, правда без регулярных выражений(

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
string[] str = { "gmf41", "df3g1", "98g5gg4g" }; string str1; string str2 = ""; int number; foreach(string x in str) { str1 = x; char[] mas= str1.ToCharArray(); foreach (char h in mas) { if (char.IsDigit(h) == true) { str2 += h; } } } number = Convert.ToInt32(str2); Console.WriteLine(number); Console.ReadLine();

340 / 340 / 90
Регистрация: 04.03.2010
Сообщений: 648

1 2 3 4 5 6 7 8 9 10 11 12 13 14
class Program { static void Main(string[] args) { string[] str = { "fdsg123", "234 fgds*s**d*", "SsTyd %377" }; foreach (string st in str) { int[] intMatch = st.Where(Char.IsDigit).Select(x => int.Parse(x.ToString())).ToArray(); Console.WriteLine(string.Join(" ", intMatch)); } Console.ReadKey(); } }

189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497

ТС-у было бы полезно указать, возможен ли такой вариант «123fdsg567» и как в этом случае следует выполнять разбор.

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как вытащить некоторые строки в отдельные переменные
string a = "c:\test.txt to D:\tmp.txt" как вытыщить в отдельные переменные c:\test.txt и D:\tmp.txt

Как вытащить число или буквы из строки где буквы с цифрами
Столкнулся с такой особенностью. Не могу понять в чём дело, может просто недопонимают синтаксиса.

Вытащить число из строки
Здравствуйте. Как перевести несколько символов char в int? Например, мне надо перевести набор.

как вытащить число
Проблема у меня получилась потому, что непросто вытащить, но и преобразовать есть А, нужно- В.

Или воспользуйтесь поиском по форуму:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *