小编Dry*_*ong的帖子

在os.listdir(path)中使用文件扩展名通配符

我有一个文件目录,我试图使用Python解析.如果它们都是相同的扩展名,我就不会有问题,但无论出于何种原因,它们都是在原始扩展后使用顺序数字扩展创建的.例如:foo.log foo.log.1 foo.log.2 bar.log bar.log.1 bar.log.2 etc.最重要的是,foo.log是XML格式,而bar.log不是.为了只读取和解析文件foo.log.* foo.log文件,最佳路径是什么?该bar.log文件不需要被读取.以下是我的代码:

import os
from lxml import etree
path = 'C:/foo/bar//'
listing = os.listdir(path)
for files in listing:
    if files.endswith('.log'):
        print files
        data = open(os.path.join(path, files), 'rb').read()
        tree = etree.fromstring(data)
        search = tree.findall('.//QueueEntry')
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为它不读取任何.log.*文件,并且解析器在读取的文件上阻塞,但不是xml格式.谢谢!

python

34
推荐指数
3
解决办法
7万
查看次数

jQuery UI 扩展可拖动的“Snap”线

我正在尝试使用 jQuery UI 的可拖动功能来扩展元素捕捉的区域。截至目前,我可以使用以下基本代码让元素捕捉到另一个元素:

$('.drag').draggable({
    containment: 'parent',
    snap: true
});
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,一旦将一个元素拖离另一个元素,我就会失去捕捉功能。有没有办法延长确定捕捉位置的线?

例如,假设我们有 3 个元素,我想将所有三个元素对齐在同一垂直轴上。该轴将始终位于任何元素的左侧并随它们一起移动。无论元素 #2 或 #3 的垂直位置如何,我都可以捕捉到元素 #1 的垂直轴吗?

[Element #1]    |                  |
|               |                  |
|               |                  |
|<-- Snap to here regardless of "y" location
|               |                  |
|               |                  |
|               [Element #2]       |
|               |                  |
|               |<-- Or to here    |
|               |                  [Element #3]
|               |                  |
|               |                  |<-- Or to here
Run Code Online (Sandbox Code Playgroud)

我尝试向每个元素添加顶部和底部边距以延长线条,但由于添加了边距,我无法在父容器内垂直移动元素。

这是一个小提琴,可以更好地说明我想要完成的任务。http://jsfiddle.net/3KNSn/

谢谢你!

javascript css jquery jquery-ui draggable

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

无论白天,T-SQL每小时​​都能获得一次

使用此帖子中的已接受答案在SQL Server中计算每小时的行数,并将完整的日期时间值作为结果我能够按小时获取记录计数,但是,我想这样做以便当天不会物.

无论记录来自哪一天,我如何按当天的小时计算记录数?

例如,下表:

+----------+-------------------------+
| instance |        datetime         |
+----------+-------------------------+
| A        | 2017-01-10 11:01:05.267 |
| B        | 2017-01-13 11:07:05.783 |
| C        | 2017-01-14 11:37:05.593 |
| D        | 2017-01-17 11:37:38.610 |
| E        | 2017-01-17 11:47:04.877 |
| F        | 2017-01-15 12:14:34.127 |
| G        | 2017-01-17 12:15:09.373 |
| H        | 2017-01-09 13:58:06.013 |
+----------+-------------------------+
Run Code Online (Sandbox Code Playgroud)

将导致以下数据集:

+-------------+-------------+
| recordCount |  timeStamp  |
+-------------+-------------+
|           5 | 11:00:00.00 |
|           2 | 12:00:00.00 | …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

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

这段代码是什么:%(var)s?Python可能吗?

我使用的网站后端有一个选项,允许我在为产品下订单时自定义CSV文件中发送的数据.有两列,左列是您分配标题的位置,右列是您输入变量的位置.现有变量的语法类似于%(order.random_variable)s或者.%(item.random_variable)s这看起来类似于%sPython中的字符串占位符,我相信它是相关的,如果不相同,但我不太了解语法.有人可以详细说明这段代码的目的吗?

哦,为了记录,我不打算进入并立即改变变量.只是为我的研究寻找一个好的起点.

python

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

如何在特定字符计数后在Python中拆分字符串?

我很抱歉,如果这是重复但我似乎找不到任何涉及根据字符分割字符串的内容.例如,假设我有以下字符串:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ullamcorper, eros 
sed porta dapibus, nunc nibh iaculis tortor, in rhoncus quam orci sed ante. Sed 
ac dictum nibh.
Run Code Online (Sandbox Code Playgroud)

现在,我可以根据特定字符拆分字符串,但是如何在第n 字符之后拆分此字符串,无论它是什么?像这样的东西,只有一个有效的语法是我在想的:

max_char = n #where n is the number of characters to split after
MyText = 'User input string. This is usually at least a paragraph long.'
char_count = len(MyText)
if char_count > max_char:
 #split string at max_char, create variables: MyText1 and MyText2
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.谢谢!

更新

我想发布此更新,因为我的问题仅解决了我的问题的一半.感谢Martijin的回答,我轻松地将上面的字符串切成薄片.但是,由于我正在编辑的字符串是用户提交的,我遇到了将单词切成两半的问题.为了解决这个问题,我使用了rsplit …

python

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

SQL - 选择每个值的前n次出现

假设我有一张这样的表,只有数千条记录.

| Foo | Bar  | 
| 1   | A_1  | 
| 1   | A_2  | 
| 2   | B_1  | 
| 3   | B_1  | 
| 3   | B_2  | 
| 3   | B_1  | 
| 4   | B_3  | 
...
Run Code Online (Sandbox Code Playgroud)

当我执行下面的代码时,我显然得到了Bar以B开头的每一条记录.

SELECT Foo
FROM tableName
WHERE Bar LIKE 'B%'
Run Code Online (Sandbox Code Playgroud)

我知道使用GROUP BY会得到每个的前1个记录,但我需要的不仅仅是那个.使用SELECT TOP 100只会记录前100条记录,无论它们是哪个"B",并且因为有超过100个B_1值,所以我将获得所有这些.

我怎样才能获得每个唯一B 的前n条记录?例如,B_1的前100次出现,B_2的前100次出现等.

sql t-sql sql-server sql-server-2005

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

加载到数据表时 NullValues 选项不起作用

将 CSV 读入 DataTable 时,我试图为似乎不起作用的布尔值和空值添加选项。例如,包含类似于以下数据的文件:

Id,MaxDiscount,Name,Active,AltId
1,,Foo,1,ABC123
2,10,Bar,0,DEF345
Run Code Online (Sandbox Code Playgroud)

以及使用架构文件动态获取我们期望的标头和数据类型的以下逻辑:

var dt = new DataTable();
using (var reader = new StreamReader(file.FullName))
using (var csv = new CsvReader(reader))
{
    csv.Configuration.HasHeaderRecord = true;
    csv.Configuration.IgnoreQuotes = false;
    csv.Configuration.TypeConverterOptionsCache.GetOptions<int>().NullValues.Add(string.Empty);
    csv.Configuration.TypeConverterOptionsCache.GetOptions<bool>().BooleanFalseValues.Add("0");
    csv.Configuration.TypeConverterOptionsCache.GetOptions<bool>().BooleanTrueValues.Add("1");

    using (var dr = new CsvDataReader(csv))
    {
        foreach (var p in schema.Properties)
        {
            var type = Type.GetType(p.Type, true, true);
            var dc = new DataColumn
            {
                ColumnName = p.Name,
                Unique = p.IsId,
                AllowDBNull = p.Nullable,
                DataType = type
            };

            dt.Columns.Add(dc);
        }
        dt.Load(dr);
    }
}
Run Code Online (Sandbox Code Playgroud)

这导致错误 …

.net c# csvhelper

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

麻烦的Python操作/循环顺序

我有一些代码用于将CSV文件转换为制表符分隔文件.我的问题是我无法弄清楚如何以正确的顺序写出正确的值.这是我的代码:

for file in import_dir:
    data = csv.reader(open(file))
    fields = data.next()
    new_file = export_dir+os.path.basename(file)
    tab_file = open(export_dir+os.path.basename(file), 'a+')
    for row in data:
        items = zip(fields, row)
        item = {}
        for (name, value) in items:
            item[name] = value.strip()
    tab_file.write(item['name']+'\t'+item['order_num']...)
    tab_file.write('\n'+item['amt_due']+'\t'+item['due_date']...)
Run Code Online (Sandbox Code Playgroud)

现在,因为我的两个write语句都在for row in data循环中,所以我的标题被多次写入.

如果我突然出现第一个write语句,我将会出现明显的格式错误.
如果我将第二个write语句移到第一个语句之上,然后是outdent语句,那么我的数据将会出现故障.

我该怎么做才能确保第一个write语句作为标题写入一次,第二个语句为CSV文件中的每一行写入?如何在不破坏字典的情况下在循环外提取第一个'write'语句?谢谢!

python

0
推荐指数
2
解决办法
113
查看次数