কেন csvwriter.writerow () প্রতিটি চরিত্রের পরে কমা রাখে?


99

এই কোডটি ইউআরএলটি খোলে এবং শেষে যুক্ত /namesকরে পৃষ্ঠাটি খোলে এবং স্ট্রিংটি এতে প্রিন্ট করে test1.csv:

import urllib2
import re
import csv

url = ("http://www.example.com")
bios = [u'/name1', u'/name2', u'/name3']
csvwriter = csv.writer(open("/test1.csv", "a"))

for l in bios:
    OpenThisLink = url + l
    response = urllib2.urlopen(OpenThisLink)
    html = response.read()
    item = re.search('(JD)(.*?)(\d+)', html)
    if item:
        JD = item.group()
        csvwriter.writerow(JD)
    else:
        NoJD = "NoJD"
        csvwriter.writerow(NoJD)

তবে আমি এই ফলাফলটি পেয়েছি:

J,D,",", ,C,o,l,u,m,b,i,a, ,L,a,w, ,S,c,h,o,o,l,....

আমি যদি স্ট্রিংটি ("জেডি", "কলম্বিয়া আইন স্কুল" ....) এ পরিবর্তন করি তবে আমি পাই

JD, Columbia Law School...)

ডিলিমেটারটি কীভাবে নির্দিষ্ট করা যায় তা আমি ডকুমেন্টেশনে খুঁজে পাইনি।

যদি আমি ব্যবহার করার চেষ্টা করি তবে আমি delimenterএই ত্রুটিটি পেয়েছি:

TypeError: 'delimeter' is an invalid keyword argument for this function

সাহায্যের জন্য ধন্যবাদ.


8
এটি delimiterএবং তা নয় delimeter: docs.python.org/library/csv.html
জন পাউলেট

4
আপনি যদি Writer.writerow গুলি নিয়ে এই সমস্যাটি পেয়ে থাকেন তবে এটিকে তালিকার একটি তালিকা নয় স্ট্রিংয়ের একটি তালিকা দিন।
নওম্যানন

উত্তর:


152

এটি স্ট্রিংগুলির একটি ক্রম (যেমন: একটি তালিকা বা টিপল) প্রত্যাশা করে। আপনি এটিকে একটি একক স্ট্রিং দিচ্ছেন। স্ট্রিংটিও স্ট্রিংয়ের ক্রম হতে পারে তবে এটি 1 টি অক্ষরের স্ট্রিংয়ের ক্রম, যা আপনি চান তা নয়।

আপনি যদি প্রতি সারিতে কেবল একটি স্ট্রিং চান তবে আপনি এই জাতীয় কিছু করতে পারেন:

csvwriter.writerow([JD])

এটি জেডি (একটি স্ট্রিং) একটি তালিকা সহ মোড় করে।


ধন্যবাদ! এটি এটি স্থির করে। আমি অন্যান্য উত্তরও চেষ্টা করব। আমি একটি খালি তালিকা জেডিএলিস্টও তৈরি করেছি = [] এবং এতে জেডি সংযুক্ত করেছি, এটি কাজ করে তবে এটি সহজ।
জেইনেল

4
এখন এটি স্ট্রিংয়ের উদ্ধৃতি চিহ্নগুলিও লিখেছে। যে কাছাকাছি একটি উপায় আছে কি?
সিজিএফএক্স

@ সিজিএফএক্স আপনি কি উদাহরণ কোড পোস্ট করতে পারেন যা এটি দেখায়?
লরেন্স গনসালভেস

writer.writerow([datetime.now().strftime("%Y-%m-%d %H:%M:%S")])"2016-11-05 20:30:19"
ডেটটাইম

@ সিজিএফএক্স আমি এই আচরণটি পুনরুত্পাদন করতে পারি না। আমি 2016-11-05 13:21:11উদ্ধৃতি ছাড়া পেতে । পাইথনের কোন সংস্করণ আপনি ব্যবহার করছেন?
লরেন্স গনসাল্ভেস

6

Csv.writer শ্রেণীটি লেখার পক্ষে যুক্তি হিসাবে একটি পুনরাবৃত্তিযোগ্য লাগে; পাইথনের স্ট্রিং অক্ষর অনুসারে পুনরুক্তিযোগ্য, এগুলি লেখার পক্ষে একটি গ্রহণযোগ্য যুক্তি, তবে আপনি উপরের আউটপুটটি পান।

এটি সংশোধন করার জন্য, আপনি সাদা জায়গার উপর ভিত্তি করে মানটি বিভক্ত করতে পারেন (আমি ধরে নিচ্ছি যা আপনি চান)

csvwriter.writerow(JD.split())

1

এটি ঘটে, কারণ যখন ম্যাচওজেক্ট উদাহরণের গোষ্ঠী () পদ্ধতিটি কেবল একটি একক মান প্রদান করে, তখন এটি স্ট্রিং হিসাবে ফিরে আসে। যখন একাধিক মান থাকে, তারা স্ট্রিংগুলির একটি টুপল হিসাবে ফিরে আসে।

আপনি যদি একটি সারি লিখছেন তবে আমার ধারণা, csv.writer আপনি যে বস্তুটিতে এটি পাঠাবেন তার পুনরাবৃত্তি করে। যদি আপনি একটি একক স্ট্রিং পাস করেন (যা একটি পুনরাবৃত্তিযোগ্য), এটি এর অক্ষরগুলির উপর পুনরাবৃত্তি করে, ফলাফলটি আপনি পর্যবেক্ষণ করছেন producing আপনি যদি স্ট্রিংগুলির একটি টুপল পাস করেন তবে এটি একটি আসল স্ট্রিং পায়, প্রতিটি পুনরাবৃত্তির উপর একটি অক্ষর নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.