Гораздо лучше использовать эту логическую функцию:
r.GetSchemaTable().Columns.Contains(field)
Один вызов - никаких исключений. Это может вызвать исключения изнутри, но я так не думаю. ПРИМЕЧАНИЕ. В комментариях ниже мы поняли это ... правильный код на самом деле:
public static bool HasColumn(DbDataReader Reader, string ColumnName) {
foreach (DataRow row in Reader.GetSchemaTable().Rows) {
if (row["ColumnName"].ToString() == ColumnName)
return true;
} //Still here? Column not found.
return false;
}
Поскольку вы хотите объединить несколько пробелов в один пробел, а затем удалить символы, которые не являются словами или пробелами, вы должны сделать это в двух отдельных подстановках регулярных выражений:
print(re.sub(r'[^0-9a-zA-Z ]+', '', re.sub(r'\s+', ' ', s)))
.
apple new A
Вы хотите «яблоко новый A» для результата, верно?
s="____Ç_apple___ _______new A_____"
result = re.sub('[^a-zA-Z|\s]+', '', s) # apple new A
result = ' '.join(result.split()) # apple new A
print(result)