На массивах нет метода append()
. Вместо этого, как уже было сказано, объект List может обслуживать необходимость динамической вставки элементов, например.
List<String> where = new ArrayList<String>();
where.add(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1");
where.add(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1");
Или если вы действительно хотите использовать массив:
String[] where = new String[]{
ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1",
ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1"
};
, но затем это фиксированный размер, и никакие элементы не могут быть добавлены.
Оба DictReader
и DictWriter
принимают произвольные аргументы, включая delimiter
, и передают их нижележащему объекту reader
или writer
в качестве документации говорит:
class
csv.DictReader
(…)Все остальные необязательные аргументы или аргументы ключевых слов передаются в базовый
blockquote>reader
экземпляр.
class
csv.DictWriter
(…)Любые другие необязательные или ключевые аргументы передаются в базовый [ 119] экземпляр.
blockquote>Изменение соответствующей строки в вашем коде выше на
r = csv.DictReader(infile, delimiter=";")
должно работать как положено.