Member 13647869 Ответов: 1

Как исправить представление моих данных


Я хотел объединить все три строки в текстовом файле и сделать его одной строкой. Это сработало, однако я получаю все новые строки в абзаце форума, а не в списке, как в строке за строкой. Я хотел это изменить:

T	2009-06-26 16:20:35
U	http://twitter.com/mujiang
W	No Post Title


чтобы это выглядело так:

2009-06-26 16:20:35 http://twitter.com/mujiang No Post Title


Я обнаружил, что единственный способ сделать это-записать выходные данные в отдельный файл. это невозможно, но это единственный способ, который я знаю.

Я написал этот код:
with open('tweets2009-10.txt', "r") as infile:
    for line in infile:
        if 'Apple'in line or 'apple' in line or 'Obama' in line or 'obama' in line:
            fout = open('newdata.txt', 'w')

            line_order = {'T': 'U', 'U': 'W', 'W': 'T'}

            with open('tweets2009-10.txt') as fin:
              prev_head = None
              new_line = ""
              for line in fin:
                cur_head = line[0]
                if prev_head is None or cur_head == line_order.get(prev_head):
                  new_line += line.strip()[1:]
                  if cur_head == 'W':
                    new_line += "\n"
                    fout.write(new_line)
                    new_line = ""
                  else:
                    new_line += ","
                  prev_head = cur_head
                else:
                  pass 
)


Однако новый файл new.txt... там ничего не написано. Я запустил код в течение 5 минут, и он все еще пуст

Я не знаю, что может быть не так в коде]

Пожалуйста, помогите.

Что я уже пробовал:

изменение метода

Richard MacCutchan

Очевидно, что в вашем файле больше текста, чем в вашем примере. Вам нужно посмотреть на фактическое содержание и отфильтровать строки, которые не нужны.

Member 13647869

Позвольте мне попытаться объяснить дальше. Первоначально файл выглядит следующим образом:
T 2009-06-25 21:15:29
У http://twitter.com/mujiang
Ж Не Заглавный Пост

T 2009-06-26 16:20:35
У http://twitter.com/mujiang
Ж Не Заглавный Пост

T 2009-06-26 21:04:20
У http://twitter.com/mujiang
Ж Не Заглавный Пост

T 2009-06-27 17:50:59
У http://twitter.com/mujiang
Ж Не Заглавный Пост

T 2009-06-27 17:56:09
У http://twitter.com/mujiang
Ж Не Заглавный Пост

T 2009-06-28 00:00:10
У http://twitter.com/mujiang
Ж Не Заглавный Пост



И так далее. Но поскольку мне нужно сделать некоторый анализ настроений в этом файле, и каждые три строки связаны, мне нужно сгруппировать их. так что каждые три линии становятся одной линией

Richard MacCutchan

Но ваш код этого не делает. Это просто объединение каждой строки в одну длинную строку. Вам нужно проверить каждую строку, чтобы увидеть, с какого управляющего символа она начинается, и обработать ее соответствующим образом. Вам также нужно выяснить, откуда берется весь этот дополнительный текст.

Richard MacCutchan

Зачем вам нужны отдельные файлы? Все, что вам нужно сделать, это проверить префиксный символ в каждой строке ввода и начать новую строку, когда вы читаете элемент, начинающийся с буквы "Т".

Member 13647869

но как можно совместить эти линии? я могу использовать .присоединиться?

Richard MacCutchan

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

Member 13647869

Извините, я очень запутался в этой теме

1 Ответов

Рейтинг:
0

Mohibur Rashid

Вы дважды открывали один и тот же файл. Второй-под петлей.
У тебя есть условие. Согласно ваших данных, только строки U и W линию может быть ваш, если условие.

Следующий выпуск-это:
Что произойдет, если ваше условие if совпадет, вы откроете имя файла newdata.txt с в, другими словами, для каждого матча он будет упаковывать пустой файл, уничтожая предыдущий файл. т. е. если ваш матч совпадает и даже если есть более одного матча, вы получите только один выход. Но, согласно вашим следующим командам, этого тоже не произойдет.

Далее>
Вы читаете tweets2009-10.txt как фин. Вы читаете один и тот же файл tweets2009-10.txt в верхней петле.

Я остановлюсь здесь.

Вся ваша логика ошибочна.

Предложенная логика была бы такова:

open output to write
while(more lines in file) 
  read next 3 lines;
  if line 2 or line 3 contains preferred words; then
    format 3 lines as a single line;
    write single line to output file