2013-10-07 2 views
-1

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

"cat,dog,fish"   (first row) 
"turtle,charzard,pikachu,lame" (second row) 
"232.34,23.4,242.12%"   (third row) 

мой вопрос, как я могу считать маркеры в каждой строке, как первая строка имеет 3, второй ряд имеет 4, третий имеет 3. после этого, как я могу подсчитать уроки, тогда для каждой строки решаем, какой токен имеет наибольшее количество символов? так что результат выглядит примерно так:

token count = 3, character count = 10, fish has the most characters 
token count = 4, character count = 25, charzard has the most characters 
token count = 3, character count = 17, 242.12% has the most characters 

только с использованием простых методов списка, таких как len(). и использование запятой в качестве разделителя. спасибо, им действительно потерял, потому что каждый раз, когда я пытаюсь лишить запятая с помощью полосы («») я получаю сообщение об ошибке

+2

Я думаю, вы должны смотреть на 'метод split' – shyam

ответ

-2

подсчитать количество жетонов в строке

Попробуйте

import re 
print len(re.findall(r'\w+', line)) 

DEMO

4

Попробуйте это. Работы для обоих Python2 и Python3

rows = [ "cat,dog,fish", "turtle,charzard,pikachu,lame", "232.34,23.4,242.12%" ] 
for row in rows: 
    tokens = row.split(',') 
    token_cnt = len(tokens) 
    char_cnt = sum([len(token) for token in tokens]) 
    longest_token = max(tokens, key=len) 
    print("token count = %d, character count = %d, %s has the most characters" %(token_cnt, char_cnt, longest_token)) 

Результаты:

>>> token count = 3, character count = 10, fish has the most characters 
>>> token count = 4, character count = 25, charzard has the most characters 
>>> token count = 3, character count = 17, 242.12% has the most characters 

Редакцией:

Теперь, используя max вместо моего глупого выбора sort найти самое длинное слово, вдохновленный @ inspectorG4dget годов ответ.

1

Учитывая список строк:

def my_output(string_of_tokens): 
    tokens = string_of_tokens.split(",") 
    print "token count = %s, character count = %s, %s has the most characters" % 
     (len(tokens), sum(map(len, tokens)), reduce(lambda a, b: a if len(a) > len(b) else b, tokens)) 

list = ["cat,dog,fish", "turtle,charzard,pikachu,lame", "232.34,23.4,242.12%"] 
for l in list: 
    my_output(l) 
+0

+1 для' reduce' :) в моем ответе я использую 'sort', чтобы глупо найти самое длинное слово .. однако в' Python3' '' '' '' был перемещен в 'functools', что заставляет меня слишком лениться, чтобы использовать его иногда>< – starrify

1

Предполагая, что у вас есть файл разделенных запятыми строк:

with open('path/to/input') as infile: 
    for i,line in enumerate(infile, 1): 
    toks = line.split(',') 
    print "row %d: token_count=%d character_count=%d '%s' has the most characters" %(len(toks), sum(len(t) for t in toks), max(toks, key=len)) 
+0

+1 для 'max'>< – starrify

Смежные вопросы