преобразование значений внутри вложенного списка в целые числа, кроме первого значения

/*
Cut the string without breaking any words, UTF-8 aware 
* param string $str The text string to split
* param integer $start The start position, defaults to 0
* param integer $words The number of words to extract, defaults to 15
*/
function wordCutString($str, $start = 0, $words = 15 ) {
    $arr = preg_split("/[\s]+/",  $str, $words+1);
    $arr = array_slice($arr, $start, $words);
    return join(' ', $arr);
}

Использование:

$input = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna liqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.';
echo wordCutString($input, 0, 10); 

Это выводит первые 10 слов.

Функция preg_split используется для разделения строки на подстроки. Границы, вдоль которых должна быть разбита строка, задаются с использованием шаблона регулярных выражений.

preg_split функция принимает 4 параметра, но только первые 3 относятся к нам прямо сейчас.

Первый параметр - шаблон. Первый параметр - это шаблон регулярных выражений, вдоль которого должна быть разбита строка. В нашем случае мы хотим разбить строку на границы слов. Поэтому мы используем предопределенный класс символов \s, который соответствует символам пробела, таким как пробел, вкладка, возврат каретки и фид строки.

Второй параметр - строка ввода Второй параметр - это длинная текстовая строка, которую мы хотим для разделения.

Третий параметр - лимит Третий параметр указывает количество подстрок, которые должны быть возвращены. Если вы установите предел на n, preg_split вернет массив из n элементов. Первые n-1 элементы будут содержать подстроки. Последний элемент (n th) будет содержать остальную часть строки.

0
задан TrebledJ 2 March 2019 в 04:00
поделиться

1 ответ

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

x = [['a', '1', ' 2.22', ' 3', '4', ' 5'],
 ['b', '11', ' 12', ' 13', ' 14', ' 15'],
 ['c', '21', ' 22', ' 23', ' 24', '25']]

new_list = [list(map(float, s[1:])) for s in x]
print(new_list)
[[1.0, 2.22, 3.0, 4.0, 5.0],
 [11.0, 12.0, 13.0, 14.0, 15.0],
 [21.0, 22.0, 23.0, 24.0, 25.0]]

В случае, если может быть какая-то пустая строка '':

x = [['a', '1', ' 2.22', ' 3', '4', ' 5'],
 ['b', '11', ' ', ' 13', ' 14', ' 15'],
 ['c', '21', ' 22', ' 23', ' 24', '25']]

new_list = [] 
for l in x:
    new_list.append([float(s) if s.strip() else None for s in l[1:]])
print(new_list)
[[1.0, 2.22, 3.0, 4.0, 5.0],
 [11.0, None, 13.0, 14.0, 15.0],
 [21.0, 22.0, 23.0, 24.0, 25.0]]
0
ответ дан Chris 2 March 2019 в 04:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: