2015-11-16 2 views
-1

У меня есть данные в следующей форме:питон скрипт для извлечения простой информации

Overall evaluation: 2 
Invite to interview: 3 
Strength or novelty of the idea (1): 3 
Strength or novelty of the idea (2): 3 
Strength or novelty of the idea (3): 4 
Use or provision of open data (1): 3 
Use or provision of open data (2): 2 
"Open by default" (1): 3 
"Open by default" (2): 2 
Value proposition and potential scale (1): 3 
Value proposition and potential scale (2): 2 
Market opportunity and timing (1): 3 
Market opportunity and timing (2): 2 
Triple bottom line impact (1): 3 
Triple bottom line impact (2): 2 
Triple bottom line impact (3): 3 
Knowledge and skills of the team (1): 2 
Knowledge and skills of the team (2): 4 
Capacity to realise the idea (1): 3 
Capacity to realise the idea (2): 2 
Capacity to realise the idea (3): 3 
Appropriateness of the budget to realise the idea: 2 

Я хочу, чтобы сделать это следующим образом:

=2+3+3+3+4+3+2+3+2+3+2+3+2+3+2+3+2+4+3+2+3+2 

Насколько я знаю, Python является довольно мощным для этот тип глупой задачи, но я не очень хорошо разбираюсь в синтаксисе, что было бы лучшим способом для достижения этой цели?

Может быть что-то вроде:

#create an array 
#array = "=" 
f = open('data.txt', 'r') 
for line in f: 
    #number = grab that number off the end with some kind of regex 
    #array.append(number + "+") 

Можно ли просто запустить это в оболочке Python и кормить в данных, а затем захватить из результата?

+1

Подсказка используйте что-то вроде 'line.split (": ")' – shuttle87

+2

, если вы знаете, что ваш номер всегда будет одиночной цифрой в самом конце строки, 'line [-1]' будет делать это для вы. else, 're.search ('. * \ d +, line)' будет делать то же самое. Кроме того, я бы предложил (если вы собираетесь просто суммировать его в конце) для инициализации массива как 'array = []', тогда вызовите '.append (number)', а затем просто 'sum (array)'. строка не может быть добавлена, если вы не выполните 'array + = number + '+' –

+0

ах! Великий! хорошая идея. дерьмо. иногда я очень близорукий. –

ответ

2
with open('data.txt', 'r') as f: 
    for line in f: 
     number = int(line.split(':')[1]) 
     array.append(number) 
print '+'.join(array) 

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

Не уверен, что вы подразумеваете под оболочкой, но да, вы можете сделать функцию и просто вызвать функцию:

+0

, будет ли это также работать в оболочке? точно так же, как оставить его открытым и продолжать извлекать данные, бросать его в оболочку и собирать результат? –

+0

Что вы подразумеваете под работой в оболочке? Запустить его в оболочке python или запустить его как сценарий оболочки? – roymustang86

+0

Я думаю, что он означает сценарий оболочки –

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