25_rfstring.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. a = r'1\232\\\13'
  2. assert a == '1\\232\\\\\\13'
  3. b = r'测\试'
  4. assert len(b) == 3
  5. assert b == '测\\试'
  6. s = '''asdasd
  7. asds1321321321测试测试
  8. '''
  9. assert s == 'asdasd\nasds1321321321测试测试\n'
  10. s = r'''asdasd
  11. asds1321321321测试\测试'''
  12. assert s == 'asdasd\nasds1321321321测试\\测试'
  13. t = 4
  14. assert f'123{t}56789' == '123456789'
  15. assert f'{{' == '{'
  16. assert f'}}' == '}'
  17. b = 123
  18. s = f'''->->{s}<-<-
  19. {b}
  20. '''
  21. assert s == '->->asdasd\nasds1321321321测试\\测试<-<-\n123\n'
  22. x = 1, 2, 3
  23. assert f"""
  24. a = {{{x[0]}, {x[1]}, {x[2]}}}""" == '\na = {1, 2, 3}'
  25. assert r''' ' ''' == " ' "
  26. a = 10
  27. assert f'{a}' == '10'
  28. assert f'{a:>10}' == ' 10'
  29. assert f'{a:<10}' == '10 '
  30. assert f'{a:<10.2f}' == '10.00 '
  31. assert f'{a:>10.2f}' == ' 10.00'
  32. assert f'{a:^10}' == ' 10 '
  33. assert f'{a:^10.2f}' == ' 10.00 '
  34. assert f'{a:3d}' == ' 10'
  35. assert f'{a:10d}' == ' 10'
  36. assert f'{a:1d}' == '10'
  37. assert f'{a:010}' == '0000000010'
  38. assert f'{a:010d}' == '0000000010'
  39. assert f'{a:010f}' == '010.000000'
  40. assert f'{a:010.2f}' == '0000010.00'
  41. assert f'{a:.2f}' == '10.00'
  42. assert f'{a:.5f}' == '10.00000'
  43. b = '123'
  44. assert f'{b:10}' == '123 '
  45. assert f'{b:>10}' == ' 123'
  46. assert f'{b:1}' == '123'
  47. assert f'{b:10s}' == '123 '
  48. obj = object()
  49. obj.b = '123'
  50. assert f'{obj.b:10}' == '123 '
  51. assert f'{obj.b:>10}' == ' 123'
  52. assert f'{obj.b:1}' == '123'
  53. assert f'{obj.b:10s}' == '123 '
  54. a = [(1,2), 3, obj]
  55. assert f'{a[0][1]}' == '2'
  56. assert f'abc{a[-1].b:10}==={1234}' == 'abc123 ===1234'
  57. assert f'{"text":10}' == 'text '
  58. assert f'{"test":*>10}' == '******test'
  59. assert f'{"test":*<10}' == 'test******'
  60. assert f'{"test":*^10}' == '***test***'
  61. assert f'{"test":*^11}' == '***test****'
  62. assert f'{12345:0>10}' == '0000012345'
  63. assert f'{obj.b!r:10}' == "'123' "
  64. assert f'{obj.b!r:*>10}' == "*****'123'"
  65. assert f'{obj.b!r:1}' == "'123'"
  66. assert f'{obj.b!r:10s}' == "'123' "
  67. assert f'{"text"!r:10}' == "'text' "
  68. assert f'{"test"!r:*>10}' == "****'test'"
  69. assert f'{"test"!r:*<10}' == "'test'****"
  70. assert f'{"test"!r:*^10}' == "**'test'**"
  71. assert f'{"test"!r:*^11}' == "**'test'***"
  72. assert f'{12345!r:0>10}' == "0000012345"
  73. # test {{ and }}
  74. assert f'' == ''
  75. assert f'{{}}' == '{}'
  76. assert f'{{{{}}}}' == '{{}}'
  77. assert f'{{' == '{'
  78. assert f'}}' == '}'
  79. assert f'{{{{' == '{{'
  80. assert f'}}}}' == '}}'
  81. a = 123
  82. assert f'={a}' == '=123'
  83. assert f'{a}=' == '123='
  84. assert f'--{a}--' == '--123--'
  85. assert f'{{a}}' == '{a}'
  86. assert f'{{{a}}}' == '{123}'
  87. assert f'{{=}}{a}' == '{=}123'
  88. assert f'{a}{{=}}' == '123{=}'
  89. # assert f'}123' == '123' # ignore '}'
  90. # assert f'{{{' == '{' # ignore '{'
  91. class A:
  92. def __repr__(self):
  93. return 'A()'
  94. def __str__(self):
  95. return 'A'
  96. a = A()
  97. assert f'{a!r}' == 'A()'
  98. assert f'{a!r:10}' == 'A() '
  99. assert f'{a:10}' == 'A '
  100. assert f'{a:10}' == 'A '
  101. assert f'{A()!r:10}' == 'A() '
  102. assert f'{A():10}' == 'A '
  103. assert f'{A():10}' == 'A '
  104. a = ['1', '2', '3']
  105. assert f'a = {'\n'.join(a)}' == 'a = 1\n2\n3'