2015-10-07 3 views
3

Я огромный питон noob. Попытка написать простой скрипт, который разделит строку в файле, где он видит «?»питон записывается в другой файл

строка входного файла (inputlog.log): http://website.com/somejunk.jpg?uniqid&=123&an=1234=123

линии в выходном файле (outputlog.log): http://website.com/somejunk.jpg uniqid&=123&an=1234=123

Цель здесь состоит в конечном итоге с файлом, который имеет 2 колонки :

Вот мой код это своего рода работает, кроме него не буду писать на 2-й файл

"TypeError: expected a character buffer object"

import re 

a = raw_input("what file do you want to open? ") 
b = raw_input("what is the file you want to save to? ") 

with open(a, 'r') as f1: 
    with open(b,'w') as f2: 
     data = f1.readlines() 
     print "This is the line: ", data #for testing 
     for line in data: 
      words= re.split("[?](.*)$",line) 
      print "Here is the Split: ", words #for testing 
      f2.write(words) 

f1.close() 
f2.close() 
+0

Вам не нужны функции f1.close() и f2.close(), так как вы используете «с». Он автоматически закрывает ручку. – vahnevileyes

+0

Vahn, спасибо Полезно знать! @hayley, что делает ваше редактирование (новое для переполнения стека тоже) – chowpay

ответ

2

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

Вы должны сделать что-то подобное.

words = ' '.join(words) 

Обратите внимание на пространство внутри одинарных кавычек. Это указывает, что он помещает пробел между вашими строками.

Наконец, вы затем сделать свой вызов:

f2.write(words) 

После принятия этого изменения, я проверил свой код и он успешно расколоть и написал их в файл в вашей спецификации.

+1

Sweet jeebus спасибо! это и сделал трюк. Я добавил эту строку под разделом regex и смог записать в файл. – chowpay

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