It's often practiced -- especially when extending existing systems -- to model the input data based on the way that the system actually works internally, instead of chosing the format optimal for the task at hand. This is unacceptable for final product.

Always design the interface (be it commands, switches, input text files or GUI) so that it is optimal for the work that the human user has to do. Never require strict or weird formatting, specific ordering of fields, duplicating information or similar things that make the user work harder just for the sake of simplier code.

Always make the system compute the values that can be derieved, present data in the form optimal for the user's task, etc. Processor power is cheap these days.

This doesn't mean that you should never require specific format or duplicated data -- they can have their own uses. For example, when changing your password, you're prompted to enter it twice. This is has its use outside of just simplyfying the system, so it's ok. Similar, if the input files are to be heavily edited by various people, it's good to keep them readable by requiring strict syntax. Of course, it should be paired with apropriate validating and error reporting.

This is a good practice: Use your computation power to ease the use of markup, even if that complicates your parser. Users will be greatful for a forgiving parser.