নেস্টেড তালিকা এবং floats থেকে রূপান্তর

আমি একটি টেক্সট ফাইল থেকে কিছু নম্বর পড়তে চেষ্টা এবং floats একটি তালিকা তাদের রূপান্তর করার চেষ্টা করছি, কিন্তু চেষ্টা কিছুই আমি ডান কাজ করতে বলে মনে হয়।

এখানে এখন আমার কোড:

python_data = open('C:\Documents and Settings\redacted\Desktop\python_lengths.txt','r')
python_lengths = []
for line in python_data:
    python_lengths.append(line.split())
python_lengths.sort()

print python_lengths

এটি ফেরত দেয়:

[['12.2'], ['26'], ['34.2'], ['5.0'], ['62'], ['62'], ['62.6']]

(সমস্ত বন্ধনী অন্তর্ভুক্ত)

কিন্তু আমি এটি কোন নিয়মিত কমান্ডের মত floats এর তালিকাতে রূপান্তর করতে পারি না:

python_lengths = float(python_lengths)

বা:

float_lengths = [map(float, x) for x in python_lengths]

কারণ এটি নেস্টেড বা অন্য কিছু বলে মনে হচ্ছে?

0
যোগ সম্পাদিত
মতামত: 1

3 উত্তর

def floats_from_file(f):
    for line in f:
        for word in line.split():
            yield float(word)

with open('C:/Documents and Settings/redacted/Desktop/python_lengths.txt') as f:
    python_lengths = list(floats_from_file(f))

python_lengths.sort()

print python_lengths

দ্রষ্টব্য যে আপনি ফরোয়ার্ড স্ল্যাশ ব্যবহার করতে পারেন, এমনকি উইন্ডোজও। যদি আপনি ব্যাকস্ল্যাশ ব্যবহার করতে চান তবে সমস্যাগুলি এড়াতে আপনাকে "কাঁচা" স্ট্রিং ব্যবহার করতে হবে। কি ধরণের সমস্যা? ওয়েল, কিছু অক্ষর ব্যাকস্ল্যাশ সঙ্গে বিশেষ; উদাহরণস্বরূপ, \ n একটি নতুন লাইন প্রকাশ করে। আপনি যদি কেবলমাত্র একটি সমতল কোটায় একটি পাথ রাখেন, এবং একটি ডিরেক্টরী নামগুলি n দিয়ে শুরু হয়, তাহলে সেখানে একটি নতুন লাইন আসবে। সমাধানগুলি ব্যাকস্ল্যাশকে দ্বিগুণ করা হয়, কাঁচা স্ট্রিংগুলি ব্যবহার করে, অথবা ফ্লেড স্ল্যাশ ব্যবহার করে।

0
যোগ

@ ইউমিরো এর উত্তরটি সঠিক, তবে এটি এমন কিছু বিষয় যা সাহায্য করতে পারে:

numbers = []
with open('C:\Documents and Settings\redacted\Desktop\python_lengths.txt','r') as f:
   for line in f.readlines():
      numbers.extend(line.split())

numbers.sort()
print numbers
0
যোগ

এটা ঘটছে কারণ .split() সবসময় আইটেমগুলির একটি তালিকা ফেরত দেয়, এমনকি যদি শুধুমাত্র 1 টি উপাদান উপস্থিত থাকে আপনি যদি python_lengths.append (line.split ()) পরিবর্তন করেন তবে থেকে python_lengths.extend (line.split ()) পরিবর্তন করুন আপনি আশা করেন আপনার ফ্ল্যাট তালিকাটি আপনি পাবেন।

0
যোগ
/ থ্রেড। আপনাকে অনেক ধন্যবাদ, আপনি কোন ধারণা আছে !! এই এক শব্দ গত 4 ঘন্টা ধরে এই প্রোগ্রাম শেষ করার থেকে আমাকে বাঁধন করা হয়েছে -_-
যোগ লেখক user1367212, উৎস