Python 3.4.4格式化问题

时间:2017-02-14 17:48:51

标签: python python-3.x formatting ascii

我想知道是否有办法在输入行的末尾添加一个字符串。

print('┌──────────────────────────────────────────────────────────┐')
ItemCost = float(input('│Enter item cost: '))

此输出

┌─────────────────────────────────────────────────────────┐
│Enter item cost: xxxx

我希望输出

┌─────────────────────────────────────────────────────────┐
│Enter item cost: xxxx                                    │

(不包括“”中的部分

任何帮助都会得到帮助谢谢

2 个答案:

答案 0 :(得分:1)

在写完整行后,您可以使用ANSI转义码重新定位光标。但请注意,由于input将提示写入标准错误,您可能希望在调用input时包含这两行。

prompt = ('┌──────────────────────────────────────────────────────────┐\n'
          '│Enter item cost: \033[s                                   |\033[u'))

ItemCost = float(input(prompt))

\033[s告诉终端记住光标的当前位置; \033[u告诉终端将光标移动到当前记住的位置。

这要求您的终端了解ANSI转义码;更便携的解决方案是使用curses库。

答案 1 :(得分:0)

如果您的终端了解ANSI转义码,那么@ chepner的答案非常好。

以下适用于没有的终端(例如Windows PowerShell):

UPDATE jsontesting
SET jsondata = jsonb_set(
  jsondata::jsonb,
  array['nestedfield'],
  (jsondata->'nestedfield')::jsonb || '["newString"]'::jsonb) 
WHERE id = 7;

不幸的是,退格(>>> prompt = '''\ ... ┌──────────────────────────────────────────────────────────┐ ... │Enter item cost: │''' + 42 * '\b' >>> item_cost = float(input(prompt)) ┌──────────────────────────────────────────────────────────┐ │Enter item cost: 12.5 │ >>> item_cost 12.5 )只能将光标移动到一行上,所以你不能在输入框上放置一个底部并退回到前一行。为此,您必须使用基于'\b'的方法。