Как сделать каждую строку в текстовом файле списком? - PullRequest
0 голосов
/ 20 марта 2019

У меня есть текстовый файл в алфавитном порядке, похожий на этот в Python:

At 210.001 \n Au 196.9665 \n B 10.81 \n Ba 137.34 \n

Как мне сделать каждую строку списком?Чтобы сделать это списком, пробел между буквами и цифрами должен быть «,», и как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Вы можете использовать следующий код:

with open('list.txt', 'r') as myfile:
    data=myfile.read()
    print([i.strip().split() for i in data.split(' \\n') if len(i.strip())>0])

выход:

[['At', '210.001'], ['Au', '196.9665'], ['B', '10.81'], ['Ba', '137.34']] 

Если вы хотите преобразовать 2-й элемент в float, измените код на:

def floatify_list_of_lists(nested_list):
    def floatify(s):
      try:
        return float(s)
      except ValueError:
        return s
    def floatify_list(lst):
        return [floatify(s) for s in lst]
    return [floatify_list(lst) for lst in nested_list]

with open('list.txt', 'r') as myfile:
    data = myfile.read()
    print(floatify_list_of_lists([i.strip().split() for i in data.split(' \\n') if len(i.strip())>0]))

выход:

[['At', 210.001], ['Au', 196.9665], ['B', 10.81], ['Ba', 137.34]] 

Если вам действительно нужно иметь одну строку во всех вложенных строках, используйте:

with open('list.txt', 'r') as myfile:
    data=myfile.read()
    print([[i.strip().replace(' ',',')] for i in data.split(' \\n') if len(i.strip())>0])

выход:

[['At,210.001'], ['Au,196.9665'], ['B,10.81'], ['Ba,137.34']]
0 голосов
/ 20 марта 2019

Использование replace() для замены пробела на ,:

list.txt:

At 210.001
Au 196.9665
B 10.81
Ba 137.34

Следовательно

logFile = "list.txt"

with open(logFile) as f:
    content = f.readlines()      
# you may also want to remove empty lines
content = [l.strip() for l in content if l.strip()]        
for line in content:     
    print([line.replace(" ", ",")])  # for each line, replace the space with ,

OUTPUT

['At,210.001']
['Au,196.9665']
['B,10.81']
['Ba,137.34']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...