[解決済み】属性エラー:'list'オブジェクトに'split'属性がない
質問
あるファイルを読み込んで、各行のセルをカンマで分割し、緯度と経度の情報を含む1番目と2番目のセルだけを表示しようとしています。 これがそのファイルです。
<ブロッククオート時間 緯度,経度 ,type2015-03-20T10:20:35.890Z, 38.8221664,-122.7649994 ,earthquake2015-03-20T10:18:13.070Z, 33.2073333,-116.6891667 ,earthquake2015-03-20T10:15:09.000Z, 62.242,-150.8769 地震
私のプログラム
def getQuakeData():
filename = input("Please enter the quake file: ")
readfile = open(filename, "r")
readlines = readfile.readlines()
Type = readlines.split(",")
x = Type[1]
y = Type[2]
for points in Type:
print(x,y)
getQuakeData()
このプログラムを実行しようとすると、エラーが発生します。
<ブロッククオート"AttributeError:「リスト」オブジェクトは「スプリット」属性を持ちません。
助けてください!
どのように解決するのですか?
実は、もっと広い範囲で混乱が起きているのだと思います。
最初のエラーは、あなたが
split
を行の全リストに適用することはできません。
split
は文字列のリストであり、文字列のみです。だから、あなたは
split
各行
のように、全体ではなく
そして、あなたがやっているのは
for points in Type
で、そのような各
points
を与えると、新しい
x
と
y
. でも、そうはいかないんです。
Types
は2つの値だけです。
x
と
y
ということで、まず
points
は
x
となり、ポイントは
y
で、終了です。つまり、繰り返しになりますが、各行でループして
x
と
y
の値は
各行
をループさせるのではなく、1つの
Types
を1行から削除します。
そのため、ファイル内のすべての行をループして、その中で
split
を
x
と
y
を各行ごとに1回ずつ実行します。こんな感じ。
def getQuakeData():
filename = input("Please enter the quake file: ")
readfile = open(filename, "r")
for line in readfile:
Type = line.split(",")
x = Type[1]
y = Type[2]
print(x,y)
getQuakeData()
余談ですが
close
を使用するのが理想的です。
with
ステートメントがありますが、これは最後に説明します。
興味深いことに、ここでの問題は、あなたが初心者すぎるということではなく、専門家がするのと同じように抽象的に問題を解決しようとしていて、ただ単に詳細をまだ知らないということなのです。これは完全に可能です。ただ、暗黙的に行うのではなく、機能のマッピングを明示的に行う必要があります。こんな感じです。
def getQuakeData():
filename = input("Please enter the quake file: ")
readfile = open(filename, "r")
readlines = readfile.readlines()
Types = [line.split(",") for line in readlines]
xs = [Type[1] for Type in Types]
ys = [Type[2] for Type in Types]
for x, y in zip(xs, ys):
print(x,y)
getQuakeData()
あるいは、もっといい書き方があるかもしれません。
def getQuakeData():
filename = input("Please enter the quake file: ")
# Use with to make sure the file gets closed
with open(filename, "r") as readfile:
# no need for readlines; the file is already an iterable of lines
# also, using generator expressions means no extra copies
types = (line.split(",") for line in readfile)
# iterate tuples, instead of two separate iterables, so no need for zip
xys = ((type[1], type[2]) for type in types)
for x, y in xys:
print(x,y)
getQuakeData()
最後に、NumPy と Pandas を見てみましょう。 する は、あなたがやろうとしていたのとほとんど同じ方法で、データの配列やフレーム全体に対して暗黙的に機能をマッピングする方法を提供します。
関連
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] リストの要素数を取得する方法
-
[解決済み] Pythonでオブジェクトが属性を持つかどうかを知る方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
Python LeNetネットワークの説明とpytorchでの実装
-
Pythonの@decoratorsについてまとめてみました。
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】Flaskのテンプレートが見つからない【重複あり