4

私はPythonがまったく初めてで、単語と数字の組み合わせを含むtxtファイルを読み込もうとしています。txt ファイルを問題なく読み取ることができますが、文字列を使用できる形式にするのに苦労しています。

import matplotlib.pyplot as plt
import numpy as np
from numpy import loadtxt

f= open("/Users/Jennifer/Desktop/test.txt", "r")

lines=f.readlines()

Data = []

list=lines[3]
i=4
while i<12:
        list=list.append(line[i])
        i=i+1

print list

f.close()

3 行目から 12 行目 (0 から始まる) のすべての要素を含むリストが必要です。これはすべて数字です。行[1]を印刷すると、その行からデータが取得されます。行を印刷したり、行 [3:12] を印刷したりすると、各文字の前に \x00 が付きます。たとえば、「プレート」という単語は ['\x00P\x00l\x00a\x00t\x00e. lines = [line.strip() for line in f] を使用しても同じ結果が得られます。上記の while ループで個々の行をまとめようとすると、「AttributeError: 'str' object has no attribute 'append'.」というエラーが表示されます。

txt ファイルから選択した行をリストに入れるにはどうすればよいですか? どうもありがとう!!!

編集: txt ファイルは次のようになります。

ブロック= 1プレート:リン酸ナイジネスアッセイ2000x 1.3プレートフォーモットエンドポイント吸収吸光度生の偽り1 1 650 1 12 96 1 8 温度
(¡c)1 2 3 4 5 6
0.5286 0.5231 0.5227 0.488
0.4742 0.5011 0.4868 0.4976 0.4845 0.4848 0.5179 0.4772 0.5363 0.5109 0.5197 0.4882 0.4913 0.4941 0.5188 0.4766 0.4914 0.495 0.5172 0.4826 0.5039 0.504 0.5451 0.4771 0.4875 0.523 0.4851
0.4757 0.4767
0.4918 0.5212 0.4742 0.5153 0.5027 0.5235 0.4474 0.4841 0.5193 0.4755 0.4649 0.4883
0.5165 0.5223 0.4799 0.5269 0.5091 0.5191
0.4721 0.4794 0.501 0.4467 0.4785 0.4792 0.4894 0.511 0.4778 0.5223 0.4888 0.5273
0.4122 0.4454 0.314 0.2747 0.4621 0.4416 0.3716 0.2534 0.4497 0.5778 0.2319 0.1038 0.4479 0.5368 0.3046 0.3115 0.4745 0.5116
0.3689 0.3915 0.4803 0.5209 0.1981 0.1062

~End 元のファイル名: 2013-08-06 Phosphate Noisiness; 最終保存日: 2013 年 8 月 6 日 19:00:55

更新 私はこのコードを使用しました:

f= open("/Users/Jennifer/Desktop/test.txt", "r")
file_list = f.readlines()

first_twelve = file_list[3:11]

data = [x.replace('\t',' ') for x in first_twelve]
data = [x.replace('\x00','') for x in data]
data = [x.replace(' \r\n','') for x in data]

print data

to get this result: [' 21.4 0.4977 0.5074 0.5183 0.5128 0.5021 0.5114 0.4993 0.5308 0.4837 0.5286 0.5231 0.5227 ', ' 0.488 0.4742 0.5011 0.4868 0.4976 0.4845 0.4848 0.5179 0.4772 0.5363 0.5109 0.5197 ', ' 0.4882 0.4913 0.4941 0.5188 0.4766 0.4914 0.495 0.5172 0.4826 0.5039 0.504 0.5451 ', ' 0.4771 0.4875 0.523 0.4851 0.4757 0.4767 0.4918 0.5212 0.4742 0.5153 0.5027 0.5235 ', ' 0.4474 0.4841 0.5193 0.4755 0.4649 0.4883 0.5165 0.5223 0.4799 0.5269 0.5091 0.5191 ', ' 0.4721 0.4794 0.501 0.4467 0.4785 0.4792 0.4894 0.511 0.4778 0.5223 0.4888 0.5273 ', ' 0.4122 0.4454 0.314 0.2747 0.4621 0.4416 0.3716 0.2534 0.4497 0.5778 0.2319 0.1038 '、' 0.4479 0.5368 0.3046 0.3115 0.4745 0.5116 0.3689 0.3915 0.4803 0.5209 0.1981 0.1981 0.1981 0.1981 0.1981 0.1981 0.1981 0.1981 0.1981 0.1981 0.1981 0.1981 0.1981 0.1981 0.1981 0.1981 0.1981 0.1981 0.1981 0.1981 0.1981

これは (私が間違っている場合は訂正してください。Python は初めてです!) 私が操作できるリストのリストです。回答してくださった皆様、本当にありがとうございました!!!

4

4 に答える 4

6

コードを書くと、lines = f.readlines()行のリストが返されます。次に と言うとlines[3]、3 行目が表示されます。それが、個々のキャラクターになってしまう理由です。

あなたがする必要があるのは言うだけです

files = open("Your File.txt")

file_list =  files.readlines()

first_twelve = file_list[0:12] #returns a list with the first 12 lines

first_twelve配列を取得したら、それで好きなことを行うことができます。

各行を印刷するには、次のようにします。

for each_line in first_twelve:
    print each_line

それはあなたのために働くはずです。

于 2013-08-19T00:18:15.657 に答える
0

を使用するreadLines()と、メモリ効率が低下します。ファイル全体をメモリに取り込みます。代わりに、次のようにします。

[i.split() for i in open('filename.txt')]
于 2020-04-10T14:49:53.973 に答える