मुझे लगता है कि आपको वास्तव में यहां एक व्यापक भ्रम मिला है।
प्रारंभिक त्रुटि यह है कि आप लाइनों की पूरी सूची पर split
पर कॉल करने का प्रयास कर रहे हैं, और आप split
स्ट्रिंग्स की एक सूची नहीं, केवल एक स्ट्रिंग नहीं कर सकते हैं। तो, आपको split
प्रत्येक पंक्ति की आवश्यकता है, पूरी बात नहीं।
और फिर आप for points in Type
कर रहे हैं, और ऐसे प्रत्येक points
उम्मीद कर आप एक नया x
और y
देने के लिए। लेकिन ऐसा होने वाला नहीं है। Types
सिर्फ दो मूल्यों, x
और y
है, इसलिए पहले points
x
हो जाएगा, और फिर अंक y
हो जाएगा, और उसके बाद आप कर दिया जाएगा। तो, फिर, आपको प्रत्येक पंक्ति पर लूप करने की आवश्यकता है और और y
प्रत्येक पंक्ति से मान प्राप्त करें, एक पंक्ति से एक Types
पर लूप नहीं।
तो, सब कुछ फ़ाइल की हर पंक्ति पर एक पाश के अंदर जाते हैं, और प्रत्येक पंक्ति के लिए एक बार x
में split
और y
करना होता है। इस तरह:
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 और पांडा पर एक नज़र लेने के लिए चाहते हो सकता है, पुस्तकालयों जो करना आपको पूरी तरह से उसी सरणी या डेटा के फ्रेम पर कार्यक्षमता को मानचित्र रूप से मैप करने का एक तरीका देता है जिस तरह से आप कोशिश कर रहे थे।
क्योंकि 'सूची' में कोई' विभाजन 'नहीं है' केवल 'स्ट्रिंग' ऑब्जेक्ट्स 'विभाजित' – letsc
'रीडलाइन() '' सूची' देता है। आपको उस सूची में प्रत्येक स्ट्रिंग पर 'split()' का उपयोग करना होगा। – TigerhawkT3
त्रुटि को बारीकी से पढ़ें। आप 'रीडलाइन' विभाजित करने की कोशिश कर रहे हैं, जो एक सूची है। ऐसा नहीं किया जा सकता है। – Loocid