Скажем, у меня есть следующие данные в файле .dat:

* А- 1-2-3-4 * B- 8-2-4 * С- 4-2-5-1-5

Как я могу распечатать эти данные, как это ?:

A: 1 2 3 4

B: 8 2 4

C: 4 2 5 1 5

Произвольно печатать любое число для каждой буквы. A, B и C могут быть любым словом. и количество номеров может быть разным. я знаю, что это как-то связано с * и -

0
babikar 9 Июл 2010 в 07:05

3 ответа

Лучший ответ

Прочитайте в файле, а затем split() символы:

contents = open("file.dat").read()
for line in contents.split("*"):
  if not line: continue  # Remove initial empty string.
  line = line.strip()   # Remove whitespace from beginning/end of lines.
  items = line.split("-")
  print items[0], ":", " ".join(items[1:])
4
Stephen 9 Июл 2010 в 03:56

Используйте .split()

data_string = '*A-1-2-3-4*B-8-2-4*C-4-2-5-1-5' #read in the data

data = data_string.split('*') #split the data at the '*'

for entry in data:
    items = entry.split('-')  #split data entries at the '-'
    letter = items[0]         #you know that the first item is a letter
    if not items[0]: continue #exclude the empty string
    print letter, ':',
    for num in items[1:]:
        print int(num),
    print '\n',
0
Kit 9 Июл 2010 в 03:29

Также еще вариант

line = "*A-1-2-3-4*B-8-2-4*C-4-2-5-1-5"
s = filter(bool, line.split("*"))
for i in s:
    i = i.split("-")
    print i[0], ":", i[1:]
1
razpeitia 9 Июл 2010 в 03:20