免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2130 | 回复: 3
打印 上一主题 下一主题

求助一小段python正则 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-21 21:56 |只看该作者 |倒序浏览
Hey all
看正则表达式时,一段matchObj = re.compile(r”(?P\d+)\.(\d*)”)
不能在python2.7 过,提示

>>> matchobj=re.compile(r"(?P\d+)\.(\d*)"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/re.py", line 190, in compile
    return _compile(pattern, flags)
  File "/usr/lib64/python2.7/re.py", line 242, in _compile
    raise error, v # invalid expression
sre_constants.error: unknown specifier: ?P\d

源地址:http://developer.51cto.com/art/201003/188265.htm  
谢谢

论坛徽章:
0
2 [报告]
发表于 2013-07-21 22:16 |只看该作者
  1. (?P\d+)
复制代码
就错了。
因为,命名的组,named group,的语法是:
  1. (?P<name>xxx)
复制代码
其中name是必须的。
所以,可以改为,比如:
  1. (?P<digitValue>\d+)
复制代码
详见:
【教程】详解Python正则表达式之: (?P<name>…) named group 带命名的组

论坛徽章:
0
3 [报告]
发表于 2013-07-23 11:55 |只看该作者
回复 2# crifan


    crifan,博客不错,谢谢你
再请教你一个简单的数据库问题:“Django不会尝试自动更新数据库结构。所以你必须执行ALTER TABLE语句将模块的改动更新至数据库。” 这是
在看django教程时,为了使publication_date 为空,请问为何altere table books_book change books_book.publication_date Null null;
提示语法错误,请问该如何解决??这是相关内容:
  1. 设置日期型和数字型字段可选

  2. 虽然blank=True同样适用于日期型和数字型字段,但是这里需要详细讲解一些背景知识。

  3. SQL有指定空值的独特方式,它把空值叫做NULL。NULL可以表示为未知的、非法的、或其它程序指定的含义。

  4. 在SQL中, NULL的值不同于空字符串,就像Python中None不同于空字符串("")一样。这意味着某个字符型字段(如VARCHAR)的值不可能同时包含NULL和空字符串。

  5. 这会引起不必要的歧义或疑惑。 为什么这条记录有个NULL,而那条记录却有个空字符串? 它们之间有区别,还是数据输入不一致? 还有: 我怎样才能得到全部拥有空值的记录,应该按NULL和空字符串查找么?还是仅按字符串查找?

  6. 为了消除歧义,Django生成CREATE TABLE语句自动为每个字段显式加上NOT NULL。 这里有个第五章中生成Author模块的例子:

  7. CREATE TABLE "books_author" (
  8.     "id" serial NOT NULL PRIMARY KEY,
  9.     "first_name" varchar(30) NOT NULL,
  10.     "last_name" varchar(40) NOT NULL,
  11.     "email" varchar(75) NOT NULL
  12. )
  13. ;
  14. 在大多数情况下,这种默认的行为对你的应用程序来说是最佳的,因为它可以使你不再因数据一致性而头痛。 而且它可以和Django的其它部分工作得很好。如在管理工具中,如果你留空一个字符型字段,它会为此插入一个空字符串(而* 不是*NULL)。1

  15. 但是,其它数据类型有例外:日期型、时间型和数字型字段不接受空字符串。 如果你尝试将一个空字符串插入日期型或整数型字段,你可能会得到数据库返回的错误,这取决于那个数据库的类型。 (PostgreSQL比较严禁,会抛出一个异常;MySQL可能会也可能不会接受,这取决于你使用的版本和运气了。)在这种情况下,NULL是唯一指定空值的方法。 在Django模块中,你可以通过添加null=True来指定一个字段允许为NULL。2

  16. 因此,这说起来有点复杂: 如果你想允许一个日期型(DateField、TimeField、DateTimeField)或数字型(IntegerField、DecimalField、FloatField)字段为空,你需要使用null=True * 和* blank=True。

  17. 为了举例说明,让我们把Book模块修改成允许 publication_date为空。修改后的代码如下:

  18. class Book(models.Model):
  19.     title = models.CharField(max_length=100)
  20.     authors = models.ManyToManyField(Author)
  21.     publisher = models.ForeignKey(Publisher)
  22.     publication_date = models.DateField(**blank=True, null=True** )
  23. 添加null=True比添加blank=True复杂。因为null=True改变了数据的语义,即改变了CREATE TABLE语句,把publication_date字段上的NOT NULL删除了。 要完成这些改动,我们还需要更新数据库。2

  24. 出于某种原因,Django不会尝试自动更新数据库结构。所以你必须执行ALTER TABLE语句将模块的改动更新至数据库。
复制代码
源地址:http://djangobook.py3k.cn/2.0/chapter06/

论坛徽章:
0
4 [报告]
发表于 2013-07-24 10:13 |只看该作者
1.对数据库不熟悉。
2.但是随便搜了你的:
altere table books_book change books_book.publication_date Null null;
就发现:
altere
写错了,应该是:
alter table
3.如果再有其他错误,贴出你的完整的代码和错误,否则别人没法帮你。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP