2015-10-07 4 views
1

Я пытаюсь прочитать файл и опубликовать результаты. мой файл test.txt Рави, локон Чаран, мерзавец мне нужно распечатать его, как показано ниже - {Имя пользователя: «Равви», Применение: завиток} - {Имя пользователя: «Чаран», Применение: мерзавец }Python Split strings

Я пытаюсь следующим

file = open("test.txt", "r") 
    for line in file.readlines(): 
     line = line.strip() 
     parts = line.split("\n") 
     for part in parts: 
      print ("-" + "{" + "Username:" + "" + part[0:4] + " " + "Application:" + part[5:9] + "}") 

Ouput: - {Имя пользователя: Ravi Применение: завиток} - {Имя пользователя: голец Применение: п, ги}

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

  • {Имя пользователя: "Рави", Применение: завиток}
  • {Имя пользователя: "Чаран", Применение: мерзавец}
+0

использование «» «вместо„“ – hsfzxjy

ответ

1
with open("test.txt", "r") as my_file: 
    for line in my_file: 
     line = re.findall('(\w+)', line) 
     print '{Username:"%s", Application:%s}' % (line[0], line[1]) 
     print '{Username:"%s", Application:%s}' % (line[2], line[3]) 
+0

Thyank вы Анкур, я пытался выполнить выше код, я получил ниже ошибки TraceBack (самый последний вызов последнего): Файл" C: /Python27/Test1.py ", строка 3, в Строка = re.findall ('(\ w +)', строка) NameError: имя 're' не задано – charan

+0

вам необходимо импортировать повторно модуль – AnkurC

+0

I используется повторно модуль, все же я получил ниже ошибки.Traceback (последний последний вызов): Файл «C: /Python27/Test1.py», строка 34, в print '{Имя пользователя: "% s", Приложение:% s}'% (строка [2], line [3]) IndexError: индекс индекса за пределами допустимого диапазона – charan

1

изменить ваш печати в этот

print ('- ' + '{' + 'Username: ' + '"' + part[0:4] + '" ' + 'Application: ' + part[5:9] + '} ') 

если вы хотите распечатать двойные кавычки, вы можете либо избежать двойной цитаты, как это: "\"" или обернуть ее в одинарные кавычки, как это '"'

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

0

Это неясно, как ваш файл действительно отформатирован, хотя для строки форматированного как ваш пример:

one, two three, four 

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

s = ['one, two three, four'] 

for line in s: 
    line = line.replace(', ',':') 
    part = line.split(' ') 
    for name in part: 
     half = name.split(':') 
     print ('-{{Username:"{0}", Application:{1}}}'.format(half[0], half[1])) 

Результат:

-{Username:"one", Application:two} 
-{Username:"three", Application:four} 
+0

Спасибо, этот код работает нормально. Однако мои данные не находятся в одной строке ravi, curl находятся в одной строке charan, git находятся в следующей строке – charan

0

Мои окончательные коды, которые работали хорошо есть.

import re 
with open("test.txt", "r") as my_file: 
    for line in my_file: 
     line = re.findall('(\w+)', line) 
     print ' - {Username: '"%s"' , Application: %s}' % (line[0], line[1]) 

Code 2

file = open("test.txt" , "r") 
for line in file.readlines(): 
    data = line.strip().split(',') 
    print ("-" + " " + "{" + "Username:\"" + data[0] + "\", " + "Application:" + data[1] + "}")