Как проиндексировать файл tuple.txt, используя файл list.txt, используя python? - PullRequest
1 голос
/ 22 сентября 2019

Я хотел бы проиндексировать файл кортежа .txt, используя файл списка .txt.То есть, если мой кортеж представляет собой файл .txt, который выглядит примерно так:

[[["- 0.07636114002660116", "-0.5365621532160825", "-0.39960655510421184", "0.6733612454339026"], ["0.0", "0,0", "0,0", "37,2155259"], [ "-0,05958626994915151", "-0,023029990708366282", "-0,24325076433502524", "0,9288248327845068"], [ "0,05958626994915151", "+0,023029990708366282", "+0,24325076433502524", «36,286701067215496"], [" 0,09995740879332612 "," -0,48667451106459764 "," -0,23779637140751794 "," 0,5508093478212072 "], [" -0,2359048187690788 "," -0,07291763285985112, 303 0307 ")" 0401307 "," 032150 "," ПП """-0.08270260281220124", "-0.2497148935020871", "1.0220121263617357"], ["0.18471536734852254", "0.04700586284011614", "0.13075317534249653", "36.2865317534249653", "256.2", 039 "068", 039 ")" 025 "", "" "" "0.0295 "], [" -2.6166252598538904 "," 1.7701571470098587 "," 2.171220685416502 "," 3.833325363231776 "]]]

, и у меня есть файл list.txt, который rвыглядит примерно так:

1 3 4 7

Я хочу создать новый кортеж, проиндексировав первый файл tuple.txt с файлом list.txt

Например,в этом случае мой новый кортеж (если я сохраню его как new_tuple) должен выглядеть так:

new_tuple

Вывод:

[[["0.0", "0.0",«0.0», «37.2155259»], [«0.05958626994915151», «0.023029990708366282», «0.24325076433502524», «36.286701067215496»], «0.09995740879332612», «0.0999540», 0.208805805805805805255255255255705705705705705705705705705705702705705705705705705705705958295705958295295295295295705958376 "0", 0 "0", "37.2155259""," 0.04700586284011614 "," 0.13075317534249653 "," 36.28656567125096 "]]]

Вот необработанные файлы .txt, если они помогают.

tuple.txt: https://drive.google.com/file/d/1SdFVtxlUDj1XFm6wBUtNUS48dqJQBzwh/view?usp=sharing

list.txt: https://drive.google.com/file/d/1AUSzV5kV3aEL8AhkW-PfKsCiVZ9iyk22/view?usp=sharing

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

1 Ответ

0 голосов
/ 22 сентября 2019

Вам необходимо знать, как:

  • прочитать файл как строку,
  • преобразовать строку в литерал,
  • индексировать список с помощью другойсписок (здесь я использовал «список-понимание»),
  • преобразование списка в строку,
  • запись в файл.

Это один из способовВы можете сделать это:

import ast
tuples = ast.literal_eval(open('tuple.txt').read())[0]
indexes = [int(i) for i in open('list.txt').read().split(' ')]
open('new_tuple.txt','w').write(str([tuples[i] for i in indexes])+'\n')

Тест:

>>> import ast
>>> tuples = ast.literal_eval(open('tuple.txt').read())[0]
>>> indexes = [int(i) for i in open('list.txt').read().split(' ')]
>>> open('new_tuple.txt','w').write(str([tuples[i] for i in indexes])+'\n')
319
>>> 
$ cat new_tuple.txt 
[['0.0', '0.0', '0.0', '37.2155259'], ['0.05958626994915151', '0.023029990708366282', '0.24325076433502524', '36.286701067215496'], ['0.09995740879332612', '-0.48667451106459764', '-0.23779637140751794', '0.5508093478212072'], ['0.18471536734852254', '0.04700586284011614', '0.13075317534249653', '36.28656567125096']]
$ 
...