Вы можете использовать регулярные выражения:
bool isZero = Regex.Matches(input,"[0,]");
или
bool isZero = int.Parse(input.Replace(",","") == 0;
Вместо того, чтобы пытаться заставить его быть действительным двойным числом, удаляя лишние запятые, нечисловые символы, .. попробуйте подтвердить это:
public static bool IsValidDouble(this string s)
{
double d = 0;
double.TryParse(s, out d);
return d != 0; //will be false if result is 0
//return d > 0; if you don't want negativer values
}
import csv, sqlite3
con = sqlite3.connect(":memory:")
cur = con.cursor()
cur.execute("CREATE TABLE t (col1, col2);") # use your column names here
with open('data.csv','rb') as fin: # `with` statement available in 2.5+
# csv.DictReader uses first line in file for column headings by default
dr = csv.DictReader(fin) # comma is default delimiter
to_db = [(i['col1'], i['col2']) for i in dr]
cur.executemany("INSERT INTO t (col1, col2) VALUES (?, ?);", to_db)
con.commit()
con.close()
Если файл CSV должен быть импортирован как часть программы Python, то для простоты и эффективности, Вы могли использовать os.system
вдоль строк, предложенных следующим:
import os
cmd = """sqlite3 database.db <<< ".import input.csv mytable" """
rc = os.system(cmd)
print(rc)
Дело в том, что путем определения имени файла базы данных, данные будут автоматически сохранены, принимая, нет никаких ошибок при чтении его.
Команда .import
- это функция инструмента командной строки sqlite3. Чтобы сделать это в Python, вы должны просто загрузить данные, используя любые средства Python, такие как модуль csv , и вставить данные как обычно.
Таким образом, вы также можете контролировать, какие типы вставляются, вместо того, чтобы полагаться на, казалось бы, недокументированное поведение sqlite3.