1. ホーム
  2. python

[解決済み] なぜcsvwriter.writerow()は、各文字の後にカンマを置くのですか?

2022-09-19 16:08:18

質問

このコードでは、URLを開いて /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" ...) に変更すると、次のようになります。

JD, Columbia Law School...)

デリメーターの指定方法がドキュメントに見つかりませんでした。

もし私が delimeter このエラーが出ます。

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

どのように解決するのですか?

文字列のシーケンス(例:リストやタプル)を想定しています。あなたは単一の文字列を与えています。文字列も文字列のシーケンスですが、1文字の文字列のシーケンスであり、これはあなたが望むものではありません。

もし1つの行に1つの文字列が欲しいだけなら、次のようなことができます。

csvwriter.writerow([JD])

JD(文字列)をリストで囲みます。