কমা-সীমাবদ্ধ আইটেমগুলির সাথে একটি স্ট্রিং কীভাবে পাইথনের তালিকায় রূপান্তর করতে পারি?


140

আপনি কীভাবে একটি স্ট্রিংকে তালিকায় রূপান্তর করবেন?

বলুন স্ট্রিংয়ের মতো text = "a,b,c"। রূপান্তর পরে, text == ['a', 'b', 'c']এবং আশা করি text[0] == 'a', text[1] == 'b'?


2
হাই আমি এটির মতো করেছিলাম, তালিকা (স্ট্রিংওজেক্ট.স্প্লিট (','))
গনাই গল্টকিন

উত্তর:


205

এটার মত:

>>> text = 'a,b,c'
>>> text = text.split(',')
>>> text
[ 'a', 'b', 'c' ]

বিকল্পভাবে, আপনি eval()যদি স্ট্রিংটিকে নিরাপদ বলে বিশ্বাস করেন তবে আপনি ব্যবহার করতে পারেন :

>>> text = 'a,b,c'
>>> text = eval('[' + text + ']')

@ ক্লিনটেনি: কোনও সমস্যা নেই ;-) আপনি যদি স্ট্রিংগুলিতে অবিরত বস্তুগুলি স্থির করে রাখছেন তবে আপনি এটিও সন্ধান করতে pickleপারেন।
ক্যামেরন

2
এটি কোনও অ্যারে নয়, এটি একটি তালিকা, অ্যারেগুলি মৌলিক মানগুলি উপস্থাপন করে এবং তালিকার মতো অনেকগুলি আচরণ করে, কেবলমাত্র সেগুলিতে সঞ্চিত অবজেক্টের ধরণ ব্যতীত।
জোয়াকুইন

8
বন্ধুত্বপূর্ণ অনুস্মারক: আপনি যদি স্ট্রিংটিকে নিরাপদ বলে বিশ্বাস করেন তবেও ওয়াল ব্যবহার করবেন না। ইন্টারেক্টিভ শেলটিতে ব্যক্তিগত স্ক্রিপ্টগুলি এবং ফিডিংয়ের চেয়ে বেশি কোনও কিছুর জন্য এটি সম্ভাব্য সুরক্ষা বিপদের পক্ষে মূল্যবান নয়।
উ। উইলসন

3
eval ('[' + টেক্সট + ']') a, b, c কে ভ্যারিয়েবল হিসাবে বিবেচনা করবে, স্ট্রিংকে নয়।
ফাইবিন

1
উপাহিত কারণ দুটি প্রস্তাবিত সমাধান সম্পূর্ণ আলাদা জিনিস করে এবং উত্তর পাঠ্যে এটি কোনওভাবেই ব্যাখ্যা করা হয়নি। যদিও প্রশ্নটি নিজেই স্পষ্ট নয়, উত্তরে এটি পরিষ্কার করে দেওয়া উচিত যে দুটি সমাধান সমান্তরাল বিকল্প নয়, তবে প্রশ্নের পৃথক পৃথক ব্যাখ্যা।
মাত্তেও ইটালিয়া

179

কেবল বিদ্যমান উত্তরগুলিতে যোগ করার জন্য: আশা করি, ভবিষ্যতে আপনি এরকম আরও কিছু মুখোমুখি হবেন:

>>> word = 'abc'
>>> L = list(word)
>>> L
['a', 'b', 'c']
>>> ''.join(L)
'abc'

তবে আপনি এখনই কী মোকাবেলা করছেন , @ ক্যামেরনের উত্তর দিয়ে যান।

>>> word = 'a,b,c'
>>> L = word.split(',')
>>> L
['a', 'b', 'c']
>>> ','.join(L)
'a,b,c'

4
যদিও আমি আপনার সাথে একমত যে @ ক্যামেরনের উত্তরটি "এখনই" উত্তর ছিল বলে আমি মনে করি আপনার সম্পূর্ণতা এটিকে আরও সঠিক উত্তর করে। আসল বিশ্বে আমাদের কমই কমা বিভক্ত স্ট্রিংস দেওয়া হয় এবং বিন্যাস নির্বিশেষে কীভাবে তালিকায় রূপান্তর করতে হয় তা জেনে রাখা ভাল।
ত্রিস্তানজিমারম্যান

39

নিম্নলিখিত পাইথন কোডটি আপনার স্ট্রিংটিকে স্ট্রিংয়ের তালিকায় পরিণত করবে:

import ast
teststr = "['aaa','bbb','ccc']"
testarray = ast.literal_eval(teststr)

3
এগুলি jsonউদাহরণস্বরূপ ব্যবহার করতে পারেন :json.loads(teststr)
মোহাম্মদ নাজারি

24

আমি মনে করি না আপনি কি প্রয়োজন থেকে

পাইথনে আপনাকে খুব কমই স্ট্রিংকে একটি তালিকায় রূপান্তর করতে হবে, কারণ স্ট্রিং এবং তালিকাগুলি একই রকম

ধরণের পরিবর্তন করা হচ্ছে

আপনার যদি সত্যিই একটি স্ট্রিং থাকে যা একটি অক্ষর অ্যারে হওয়া উচিত, এটি করুন:

In [1]: x = "foobar"
In [2]: list(x)
Out[2]: ['f', 'o', 'o', 'b', 'a', 'r']

প্রকারটি পরিবর্তন করা হচ্ছে না

লক্ষ করুন যে স্ট্রিংগুলি পাইথনের তালিকার মতো

স্ট্রিংগুলির তালিকার মতো অ্যাকসেসর রয়েছে

In [3]: x[0]
Out[3]: 'f'

স্ট্রিংগুলি তালিকার মতো পুনরাবৃত্ত হয়

In [4]: for i in range(len(x)):
...:     print x[i]
...:     
f
o
o
b
a
r

TLDR

স্ট্রিং তালিকা। প্রায়।


8

আপনি যদি স্পেস দিয়ে বিভাজন করতে চান তবে আপনি কেবল ব্যবহার করতে পারেন .split():

a = 'mary had a little lamb'
z = a.split()
print z

আউটপুট:

['mary', 'had', 'a', 'little', 'lamb'] 

এটি এর মধ্যে যা কিছু আছে তার আউটপুট দেয় (), অর্থাত্ কিছুই নয়।
আনথন

7

আপনি যদি সত্যিই অ্যারেগুলি চান:

>>> from array import array
>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> myarray = array('c', text)
>>> myarray
array('c', 'abc')
>>> myarray[0]
'a'
>>> myarray[1]
'b'

আপনার যদি অ্যারের প্রয়োজন না হয় এবং কেবল আপনার অক্ষরগুলির সূচী অনুসারে দেখতে চান তবে মনে রাখবেন একটি স্ট্রিং একটি পুনরাবৃত্তিযোগ্য, কেবলমাত্র তালিকার মতো এটি অপরিবর্তনীয়:

>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> text[0]
'a'

1
কৌতূহলের বাইরে, আপনি মায়ার্য = অ্যারে ('সি', পাঠ্য) করার পরে, "গ" কোথায় গেল? যেহেতু আপনি অ্যারে টাইপ করেন, আপনি অ্যারে ("সি", "অ্যাবসি") পেয়েছেন, তবে একটি [0] == ক? আপনাকে ধন্যবাদ
ক্লিনটেনি হুই

@ ক্লিনটিনি: 'সি' এর অর্থ "অক্ষরের একটি অ্যারে তৈরি করুন"। আরও তথ্যের জন্য দস্তাবেজগুলি দেখুন
ক্যামেরন

আমি upvote, কিন্তু খুব তাড়াতাড়ি। আমি যখন একটি = অ্যারে ('সি', ই) কল করার সময় অ্যারে ('সি', '1 1 91 0.001 228')
পাই

@ ভ্যালেন্টিনহেইনিজ হ্যাঁ, আমার উদাহরণে যেমন দেখানো হয়েছে আপনাকে অবশ্যই তা করতে হবে। তুমি কি প্রত্যাশা কর ?
joaquin

1
@ জোআকুইন: ঠিক আছে, আমি পেয়েছি উত্তর দিয়ে ঠিক আছে। "পাঠ্য == [এ, বি, সি]" হওয়া উচিত "প্রশ্ন == ['এ', 'বি', 'সি']"
প্রশ্নে আমি বিভ্রান্ত হয়েছি

4
m = '[[1,2,3],[4,5,6],[7,8,9]]'

m= eval(m.split()[0])

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

দয়া করে আপনার কোড সহ কিছু অতিরিক্ত তথ্য সরবরাহ করুন যাতে আসল পোস্টার আরও বুঝতে পারে যে এটি কীভাবে তার সমস্যা সমাধান করে।
ইভান

4

সমস্ত উত্তরগুলি ভাল, কাজ করার আরও একটি উপায় রয়েছে যা তালিকা বোধগম্যতা, নীচের সমাধানটি দেখুন।

u = "UUUDDD"

lst = [x for x in u]

কমা দ্বারা পৃথক তালিকার জন্য নিম্নলিখিতটি করুন

u = "U,U,U,D,D,D"

lst = [x for x in u.split(',')]

আমি লুপগুলির জন্য একক লাইনটি বুঝতে পারি না এবং কখনই করব না
মিঃ পিজ্জাগুই

1
@MrPizzaGuy এটা সহজ এবং খুব সহজ যখন আপনি এটি ব্যবহার করেন, এই পরীক্ষা youtube.com/watch?v=AhSvKGTh28Q
waghydjemy


1

stringফর্মটি রূপান্তর করতে a="[[1, 3], [2, -6]]"আমি লিখেছিলাম এখনও অপটিমাইজড কোডটি নয়:

matrixAr = []
mystring = "[[1, 3], [2, -4], [19, -15]]"
b=mystring.replace("[[","").replace("]]","") # to remove head [[ and tail ]]
for line in b.split('], ['):
    row =list(map(int,line.split(','))) #map = to convert the number from string (some has also space ) to integer
    matrixAr.append(row)
print matrixAr

0
# to strip `,` and `.` from a string ->

>>> 'a,b,c.'.translate(None, ',.')
'abc'

translateস্ট্রিংয়ের জন্য আপনার বিল্ট-ইন পদ্ধতিটি ব্যবহার করা উচিত ।

help('abc'.translate)আরও তথ্যের জন্য পাইথন শেল টাইপ করুন ।



0

উদাহরণ 1

>>> email= "myemailid@gmail.com"
>>> email.split()
#OUTPUT
["myemailid@gmail.com"]

উদাহরণ 2

>>> email= "myemailid@gmail.com, someonsemailid@gmail.com"
>>> email.split(',')
#OUTPUT
["myemailid@gmail.com", "someonsemailid@gmail.com"]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.