Получение SimpleXMLElement включать кодирование в вывод

Я думаю, что, возможно, есть лучший способ, но будет работать следующее:

import pandas as pd

df = pd.DataFrame({'a': range(0, 10), 'b': range(10, 20), 'c': range(20, 30)})

mylist = list()
for i in df.columns:
    mylist += map(str, df[i].values.tolist())
print(mylist)

Вывод:

['0', '1', '2' , «3», «4», «5», «6», «7», «8», «9», «10», «11», «12», «13», «14», « 15 ',' 16 ',' 17 ',' 18 ',' 19 ',' 20 ',' 21 ',' 22 ',' 23 ',' 24 ',' 25 ',' 26 ',' 27 ' , '28', '29']

17
задан dirtside 15 May 2009 в 16:49
поделиться

3 ответа

Я бы сказал, что вам нужно будет делать это при создании каждого объекта XML. Даже если бы SimpleXMLElement имел способ установить его, вам все равно нужно было бы установить его, поскольку я предполагаю, что объект мог бы выбрать допустимое значение по умолчанию.

Можно создать константу и создать такие объекты

$XML = new SimpleXMLElement($XMLNamespace . "<foo />");
echo($XML->asXML());
1
ответ дан 30 November 2019 в 12:44
поделиться

If you don't specify an encoding, SimpleXML cannot (sanely) guess which one you intended.

0
ответ дан 30 November 2019 в 12:44
поделиться

Вы можете попробовать это, но вы должны использовать simplexml_load_string для $ xml

$xml // Your main SimpleXMLElement
$xml->addAttribute('encoding', 'UTF-8');

Или вы все равно можете использовать другие средства для добавления кодировки к вашему выводу.

Простая замена

$outputXML=str_replace('<?xml version="1.0"?>', '<?xml version="1.0" encoding="UTF-8"?>', $outputXML);

Регулярные выражения

$outputXML=preg_replace('/<\?\s*xml([^\s]*)\?>/' '<?xml $1 encoding="UTF-8"?>', $outputXML);

DOMDocument - Я знаю, что вы сказали, что не хотите использовать DOMDocument, но вот пример

$xml=dom_import_simplexml($simpleXML);
$xml->xmlEndoding='UTF-8';
$outputXML=$xml->saveXML();

. Вы можете обернуть этот код в функцию, которая получает параметр $ encoding и добавляет его в

20
ответ дан 30 November 2019 в 12:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: