python Быстрый способ чтения отформатированных данных из текстового файла

Чтобы использовать константы внутри строк, вы можете использовать следующий метод:

define( 'ANIMAL', 'turtles' ); 
$constant = 'constant';

echo "I like {$constant('ANIMAL')}";


Как это работает?

Вы можете использовать любое имя строковой функции и произвольные параметры

Можно помещать любое имя функции в переменную и вызывать ее с параметрами внутри строки с двумя кавычками.

$fn = 'substr';

echo "I like {$fn('turtles!', 0, -1)}";

Производит

Мне нравятся черепахи

Также анонимные функции

Вы также можете использовать анонимные функции при запуске PHP 5.3 +.

$escape   = function ( $string ) {
    return htmlspecialchars( (string) $string, ENT_QUOTES, 'utf-8' );
};
$userText = "<script>alert('xss')</script>";
echo( "You entered {$escape( $userText )}" );

Производит правильно экранированный html, как ожидалось.

Массивы обратного вызова не разрешены!

Если к настоящему времени у вас создается впечатление, что имя функции может быть любым вызываемым, это не так, поскольку массив, который возвращает true при передаче в is_callable, приведет к фатальной ошибке при использовании внутри строки:

class Arr
{

    public static function get( $array, $key, $default = null )
    {
        return is_array( $array ) && array_key_exists( $key, $array ) 
            ? $array[$key] 
            : $default;
    }
}

$fn = array( 'Arr', 'get' );
var_dump( is_callable( $fn ) ); // outputs TRUE

// following line throws Fatal error "Function name must be a string"
echo( "asd {$fn( array( 1 ), 0 )}" ); 

Имейте в виду

Эта практика не рекомендуется, но иногда приводит к гораздо более читаемому коду, так что это зависит от вас - есть возможность.

1
задан user8060987 23 February 2019 в 08:49
поделиться

1 ответ

Если вы удалите 'points =' из файла, вы получите структуру данных, которую можно загрузить с помощью json.load ()

import json

with open("my_file_after_cleanup.json", "r") as read_file:
    data = json.load(read_file)
0
ответ дан balderman 23 February 2019 в 08:49
поделиться
Другие вопросы по тегам:

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