我已经在这个问题上挣扎了一个多小时了.我正在尝试使用dbf表创建一个Sqlite数据库.当我创建一个从dbf派生的记录列表以用作Sqlite executemany语句的输入时,Sqlite表将显示为空.当我尝试以交互方式使用Python复制问题时,Sqlite执行成功.从dbf生成的列表在我运行时填充 - 所以问题在于executemany语句.
import sqlite3
from dbfpy import dbf
streets = dbf.Dbf("streets_sample.dbf")
conn = sqlite3.connect('navteq.db')
conn.execute('PRAGMA synchronous = OFF')
conn.execute('PRAGMA journal_mode = MEMORY')
conn.execute('DROP TABLE IF EXISTS STREETS')
conn.execute('''CREATE TABLE STREETS
(blink_id CHAR(8) PRIMARY KEY,
bst_name VARCHAR(39),
bst_nm_pref CHAR(2));''')
alink_id = []
ast_name = []
ast_nm_pref = []
for i in streets:
alink_id.append(i["LINK_ID"])
ast_name.append(i["ST_NAME"])
ast_nm_pref.append(i["ST_NM_PREF"])
streets_table = zip(alink_id, ast_name, ast_nm_pref)
conn.executemany("INSERT OR IGNORE INTO STREETS VALUES(?,?,?)", streets_table)
conn.close()
Run Code Online (Sandbox Code Playgroud) 简单地说,我想保留一个Excel文件的所有格式到另一个.但是,尽管使用了formatting_info=True标志,但仅对更改行中的所有未更改单元格显示格式.有什么建议?
import xlrd, xlutils
from xlrd import open_workbook
from xlutils.copy import copy
inBook = xlrd.open_workbook(r"path/to/file/format_input.xls", formatting_info=True, on_demand=True)
outBook = xlutils.copy.copy(inBook)
outBook.get_sheet(0).write(0,0,'changed!')
outBook.save(r"path/to/file/format_output.xls")
Run Code Online (Sandbox Code Playgroud)
在此输入图像描述


这是一个令人尴尬的简单问题,但我似乎无法使用文件描述符打开一个新文件进行写入。我尝试过的每一个变体都会返回-1。我缺少什么?这就是使用文件描述符初始化文件的方式,对吗?我找不到另有说明的文档。
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{
int fd;
mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
fd = open ("/home/CSTCIS/sample.dat", O_WRONLY, mode);
printf("%d\n", fd);
}
Run Code Online (Sandbox Code Playgroud)
perror() 打印open: No such file or directory。
我有以下两个列表:
input = ['MAPLEWOOD AVE', 'LYNNDALE ', 'SUGAR DR']
ref = ['LYNNDALE (?:RD)?', 'HOMAN (?:AVE)?', 'MAPLEWOOD (?:AVE)?', 'LYNNDALE (?:LN)?']
我想查找inputwith中每个元素的所有匹配项ref。输出将是一个字典,每个键是一个input元素,每个值是一个ref与相应input元素匹配的元素,如下所示:
{'MAPLEWOOD AVE' : 'MAPLEWOOD AVE', 'LYNNDALE ' : 'LYNNDALE RD', 'LYNNDALE LN', 'SUGAR DR':}
以下内容使我可以迭代input查找其中的findall匹配项ref(其中包含嵌入式正则表达式分组)。但是,我无法从ref每个输入元素旁边作为值检索对应的match 元素:
combined = "(" + ")|(".join(ref) + ")"
l = []
for i in input:
if re.findall(combined,i):
l.append(i)
...
MAPLEWOOD AVE
LYNNDALE
Run Code Online (Sandbox Code Playgroud) 我试图匹配两个字符串变量,并希望捕获多个匹配.re.findall似乎是这项任务的明显选择,但它似乎并没有像我期望的那样工作.以下是一个例子:
a = 'a(pp)?le'
b = 'ale, apple, apol'
match = re.findall(a,b)
match
['','pp']
Run Code Online (Sandbox Code Playgroud)
但是,当我将相同的变量应用于re.search时,它会识别字符串中的嵌入式正则表达式,并获取第一个匹配项:
match = re.search(a,b)
match.group()
'ale'
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么re.findall不能在这个实例中工作?我希望如下:
match = re.findall(a,b)
match
['ale','apple']
Run Code Online (Sandbox Code Playgroud)
谢谢!