鱼C论坛

 找回密码
 立即注册
查看: 2195|回复: 5

[已解决]逗号与分隔符冲突

[复制链接]
发表于 2017-3-6 21:15:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 cc9200 于 2017-3-6 21:24 编辑

win7
python 3.5
postgresql 9.3



  1. import urllib.request
  2. import re
  3. import psycopg2 as psy
  4. conn=psy.connect(database='test1',user='postgres',password='091297',host='127.0.0.1',port='5432')
  5. cur=conn.cursor()
  6. try:
  7.     cur.execute('create table 糗事百科(num int,str text);')
  8. except:
  9.     pass
  10. conn.commit()
  11. def get_html(url):
  12.     req = urllib.request.Request(url)   
  13.     req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 5.1; rv:43.0) Gecko/20100101 Firefox/43.0')   
  14.     response=urllib.request.urlopen(req)
  15.     html=response.read().decode('utf-8')
  16.     return html

  17. def get_list(html):
  18.     list1=re.findall(r'\<div class="content"\>\n{4}.+?\n{3}\</div\>',html)
  19.     for each in list1:
  20.         str1=re.search(r'\<span\>.+\</span\>',each).group()[6:-7]
  21.         str1=str1.replace('<br/>','\n')
  22.         print(str1)
  23.         global i
  24.         i=i+1
  25.         print(i)
  26.         cur.execute('''insert into 糗事百科 values(%d,%s);'''%(i,str1))
  27.         conn.commit()

  28. i=0
  29. for page in range(1,35):
  30.     print(page)
  31.     html=get_html('http://www.qiushibaike.com/text/page/'+str(page)+'/')
  32.     get_list(html)
复制代码


以上是完整代码,千万别复制过去运行啊,你没有psycopg2这个库,而且还需要postgresql数据库

  1. >>> cur.execute('insert into 糗事百科 values(%d,%s);'%(1,'1234'))
  2. >>> cur.execute('insert into 糗事百科 values(%d,%s);'%(1,'12,34'))##一个逗号的差别
  3. Traceback (most recent call last):
  4.   File "<pyshell#12>", line 1, in <module>
  5.     cur.execute('insert into 糗事百科 values(%d,%s);'%(1,'12,34'))
  6. psycopg2.ProgrammingError: 错误:  INSERT 的表达式多于指定的字段数
  7. LINE 1: insert into 糗事百科 values(1,12,34);
复制代码



问题就出在,字符串里面的逗号上,其实是字符串里面的逗号,不是分隔符。其实是一个数据,不是用逗号分隔成的两个
一个字符串作为变量传入SQL语句,没办法再改成三引号啥的
如果提问提的不清楚,请指教



最佳答案
2017-3-6 21:34:32
本帖最后由 不二如是 于 2017-3-9 14:30 编辑

不要用中文输入的“,”

要用英文的","

下面的02行
cur.execute('insert into 糗事百科 values(%d,%s);'%(1,'"12,34"'))##一个逗号的差别
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-3-6 21:34:32 | 显示全部楼层    本楼为最佳答案   
本帖最后由 不二如是 于 2017-3-9 14:30 编辑

不要用中文输入的“,”

要用英文的","

下面的02行
cur.execute('insert into 糗事百科 values(%d,%s);'%(1,'"12,34"'))##一个逗号的差别
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-6 21:43:06 | 显示全部楼层
不二如是 发表于 2017-3-6 21:34
不要用中文输入的“,”

要用英文的","

我是用英文的逗号啊,半角嘛
而且,字符串变量里面的逗号是全角还是半角谁能改的了?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-6 22:45:15 | 显示全部楼层
cur.execute('insert into 糗事百科 values(%d,%s);'%(1,'"12,34"'))##一个逗号的差别
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-7 16:14:20 | 显示全部楼层
逗号

使用 ,
不要 ,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-12 12:43:45 | 显示全部楼层
SixPy 发表于 2017-3-6 22:45
cur.execute('insert into 糗事百科 values(%d,%s);'%(1,'"12,34"'))##一个逗号的差别

好了,就是引号里面再加一层引号
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-25 20:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表