小编Chr*_*son的帖子

如何使用opencsv读取包含'\'的字符串?

当我使用opencsv读取csv文件时,在字符串末尾遇到'\'时它无法正常工作.这使得"字符串的一部分,而不是'\’,因为我想我想一定是添加另一个'\’有它逃脱'\’一些方法? -字符,而不是没有手动修改csv文件.我搜索但没找到任何东西.

为了澄清我的问题,它看起来像这样:

CSV文件

"A",       "B",        "C",       "D"
"value 1", "value 2",  "value 3", "value 4"
"value 5", "value 6\", "value 7", "value 8"
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像这样(不是真的,但它显示了我的问题):

String inFile = "in.csv";
CSVReader reader = new CSVReader(new FileReader(inFile));
String[] line;

while ((line = reader.readNext()) != null) {
    for (int i = 0; i < line.length(); i++) {
        System.out.println(i + " " + line[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望这个解析成一个String [],每个元素包含4个元素,但最后一行只解析为两个元素,如下面的输出所示.

1 A
2 B
3 C
4 D
1 value 1
2 value 2 …
Run Code Online (Sandbox Code Playgroud)

java opencsv

11
推荐指数
2
解决办法
9432
查看次数

如何使用 Java 记录断言 hasProperty?

我在测试中有一段代码,使用 Hamcrest 2.2 检查结果列表是否包含某些属性:

assertThat(result.getUsers(), hasItem(
    hasProperty("name", equalTo(user1.getName()))
));
assertThat(result.getUsers(), hasItem(
    hasProperty("name", equalTo(user2.getName()))
));
Run Code Online (Sandbox Code Playgroud)

NameDto是普通班级时,这工作得很好。但是在我将其更改为 a 之后Record,HamcresthasProperty抱怨没有名为 的属性name

java.lang.AssertionError:
Expected: a collection containing hasProperty("name", "Test Name")
     but: mismatches were: [No property "name", No property "name"]
Run Code Online (Sandbox Code Playgroud)

是否有其他匹配器可以用来实现与以前相同的匹配?或者我可以使用其他一些解决方法来让它处理记录?

java unit-testing hamcrest java-record java-16

11
推荐指数
2
解决办法
510
查看次数

在Django 1.7中删除app(和相关的数据库表)

是否可以使用Django 1.7迁移来完全删除/卸载应用程序及其所有跟踪(主要是其所有数据库表)?

如果没有,在Django 1.7中这样做的适当方法是什么?

python django django-1.7

8
推荐指数
1
解决办法
2462
查看次数

为什么这个Django(1.6)注释计数如此之慢?

简介:在计算相关对象时,我使用少量查询和注释与每个项目额外的两个查询进行非常慢的查询.数据库是PostgreSQL 9.3.5.


我有一个看起来像这样的模型:

class Collection(models.Model):
    have  = models.ManyToManyField(Item, related_name='item_have', through='Have')
    want  = models.ManyToManyField(Item, related_name='item_want', through='Want')
    added = models.DateTimeField()

    class Meta:
        ordering = ['-last_bump']

class Have(models.Model):
    item       = models.ForeignKey(Item)
    collection = models.ForeignKey(Collection, related_name='have_set')
    price      = models.IntegerField(default=0)

class Want(models.Model):
    want       = models.ForeignKey(Item)
    collection = models.ForeignKey(Collection, related_name='want_set')
    price      = models.IntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)

在我看来,我列出了这些集合,我想要显示每个集合中有多少需求和数量,通过做一个注释来做到这一点:

class ListView(generic.ListView):
    model = Collection
    queryset = Collection.objects.select_related()
    paginate_by = 20

    def get_queryset(self):
        queryset = super(ListView, self).get_queryset()
        queryset = queryset.annotate(have_count=Count("have", distinct=True),
                                     want_count=Count("want", distinct=True))
Run Code Online (Sandbox Code Playgroud)

但是,这使我的查询非常慢!我在DB中有大约650条记录,django-debug-toolbar表示它进行了2次查询,平均大约400-500ms.我已尝试过prefetch_related,但它并没有让它更快.

我尝试了另一件事,在Collection模型中,我添加了这个:

@property
def have_count(self):
    return self.have.count()

@property
def …
Run Code Online (Sandbox Code Playgroud)

python django postgresql

6
推荐指数
1
解决办法
999
查看次数

在PyCharm中为特定文件设置不同的解释器

我正在研究一个在virtualenv中使用Python 3的Django项目.我刚刚遇到了结构,它只能在Python 2下运行,所以我在系统范围内安装它而不是在我的virtualenv中(甚至可以把它放在我的Python 3 virtualenv中,顺便说一下?).

这里的问题是我将PyCharm设置为使用Python 3作为解释器并为Python 2安装了结构.当我编辑我的结构文件时,它表示所有从结构导入都是未知的.

有什么办法可以解决这个问题吗?是否可以指定我的结构文件使用Python 2解释器而不是Python 3或其他解决方案?

python fabric pycharm python-3.x

6
推荐指数
1
解决办法
966
查看次数

从Django REST框架中的响应中删除count,next,previous

当我在我的API上进行GET时,它总是在结果中包含以下内容:

{
    "count": 2013,
    "next": "http://127.0.0.1:8000/api/items/?page=2",
    "previous": null,
    "results": [ {...} ... {...} ]
 }
Run Code Online (Sandbox Code Playgroud)

如何删除count,next和previous字段,只返回结果中的内容?不过,我仍然希望将结果分页.

我在这里找到了一些东西:Django REST框架:直接显示在GenericView中的结果列表中,但它不起作用.

django django-rest-framework

5
推荐指数
2
解决办法
3662
查看次数

Python:如何从具有相同名称的包导入子模块?

我有一个项目设置如下:

基础项目

/some_disk/some_folder/
|-- project/
|   |-- package/
|   |   |-- src/
|   |   |   |-- file_a.py
|   |   |   |-- file_b.py
Run Code Online (Sandbox Code Playgroud)

扩建项目

/some_other_disk/some_folder/
|-- project/
|   |-- package/
|   |   |-- src/
|   |   |   |-- file_c.py
|   |   |   |-- file_d.py
Run Code Online (Sandbox Code Playgroud)

然后我有第三个项目,我希望能够使用mopdules file_a和file_c.

在第三个项目中,我已经设置了这样的Python路径

PYTHONPATH=$PYTHONPATH:/some_disk/some_folder:/some_other_disk/some_folder
Run Code Online (Sandbox Code Playgroud)

然后,要导入文件,我在我的主模块中有这个:

import project.module.src.file_a
import project.module.src.file_c
Run Code Online (Sandbox Code Playgroud)

但是,这只能使我能够导入其中一个模块,并且在另一个模块上找不到模块错误.

我可以使用这个项目结构来完成这项工作吗?或者,Python总是只会查看其中一个"主要"模块,如果它不在那里,则会考虑未找到子模块?

编辑:该项目使用Python 2.6

python import module

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