小编Ada*_*dam的帖子

你如何在Python中使用列表解析中的正则表达式?

我正在尝试在单词列表中找到字符串的所有索引位置,并且我希望将值作为列表返回.我想找到字符串,如果它是独立的,或者如果它在标点符号之前或后面,但是如果它是一个更大的单词的子字符串则不是.

以下代码仅捕获"cow"并且错过了"test; cow"和"cow".

myList = ['test;cow', 'one', 'two', 'three', 'cow.', 'cow', 'acow']
myString = 'cow'
indices = [i for i, x in enumerate(myList) if x == myString]
print indices
>> 5
Run Code Online (Sandbox Code Playgroud)

我试过更改代码以使用正则表达式:

import re
myList = ['test;cow', 'one', 'two', 'three', 'cow.', 'cow', 'acow']
myString = 'cow'
indices = [i for i, x in enumerate(myList) if x == re.match('\W*myString\W*', myList)]
print indices
Run Code Online (Sandbox Code Playgroud)

但这会产生错误:预期的字符串或缓冲区

如果有人知道我做错了什么,我会很高兴听到.我有一种感觉,这与我正在尝试在那里使用正则表达式的事实有关,当它期待一个字符串时.有解决方案吗?

我正在寻找的输出应该是:

>> [0, 4, 5]
Run Code Online (Sandbox Code Playgroud)

谢谢

python regex

9
推荐指数
2
解决办法
3万
查看次数

Django/Sqlite3为带有外键的模型添加一行

我是Django和SQlite3的新手.我有一个模型(Person),带有(Person_Type)的外键:

class Person(models.Model):
    name = models.CharField(max_length=500)
    pers_type = models.ForeignKey(Person_Type)

    def __unicode__(self):
        return self.name

class Person_Type(models.Model):
    pers_type = models.CharField(max_length=40)

    def __unicode__(self):
        return self.pers_type
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用python manage.py shell向Person添加条目.

到目前为止,我尝试过:

import sqlite3
from trials.models import *

conn = sqlite3.connect('privy.db')
print Person #this returns <class 'privy.trials.models.Person'>
cur = conn.cursor()
fields = ['name', 'pers_type']
row = ['Adam', 'Appellant']
Person.objects.create(**dict(zip(fields, row)))
Run Code Online (Sandbox Code Playgroud)

但是这会返回一个错误:ValueError:无法指定"'Appellant'":"Person.pers_type"必须是"Person_Type"实例.

字符串"Appellant"已经存储为"Person_Type.pers_type"表中的一个值.我需要更改什么来引用pers_type字段?

如果需要,很高兴提供更多细节.非常感谢你花时间陪伴.

python sqlite django shell foreign-keys

5
推荐指数
1
解决办法
3988
查看次数

Django多对多显示值,而不是对象

我正在使用 Django 1.3,有以下 2 个模型:

class Person(models.Model):
    name = models.CharField(max_length=500)
    def __unicode__(self):
        return self.name

class Trial(models.Model):
    person = models.ManyToManyField(Person, blank=True)
    strId = str(id)
    def __unicode__(self):
        return self.strId
Run Code Online (Sandbox Code Playgroud)

我试图将“名称”的所有条目显示到视图中,但我目前只返回 <django.db.models.fields.related.ReverseManyRelatedObjectsDescriptor 对象在 0x1019b45d0>

我只有在查看页面源时才能看到。否则它看起来就像一个空白的白色屏幕。

观点如下:

def trial_entry(request, trial):
    currentTrial = Trial.objects.get(id = 1)
    personName = Trial.person
    return HttpResponse(personName)
Run Code Online (Sandbox Code Playgroud)

我显然在这里返回了错误的东西,但我已经寻找了另一种方法来做到这一点,但我发现似乎没有任何效果。这是我发现返回错误以外的任何内容的唯一方法,所以我认为这是最好的发布方式。

非常感谢

django django-models django-views

2
推荐指数
1
解决办法
3084
查看次数