25_rfstring.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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 '{}'.format(a) == '10'
  33. assert '{:>10}'.format(a) == ' 10'
  34. assert '{:<10}'.format(a) == '10 '
  35. assert '{:<10.2f}'.format(a) == '10.00 '
  36. assert '{:>10.2f}'.format(a) == ' 10.00'
  37. assert f'{a:^10}' == ' 10 '
  38. assert f'{a:^10.2f}' == ' 10.00 '
  39. assert '{:^10}'.format(a) == ' 10 '
  40. assert '{:^10.2f}'.format(a) == ' 10.00 '
  41. assert f'{a:3d}' == ' 10'
  42. assert f'{a:10d}' == ' 10'
  43. assert f'{a:1d}' == '10'
  44. assert f'{a:010}' == '0000000010'
  45. assert f'{a:010d}' == '0000000010'
  46. assert f'{a:010f}' == '010.000000'
  47. assert f'{a:010.2f}' == '0000010.00'
  48. assert f'{a:.2f}' == '10.00'
  49. assert f'{a:.5f}' == '10.00000'
  50. b = '123'
  51. assert f'{b:10}' == '123 '
  52. assert f'{b:>10}' == ' 123'
  53. assert f'{b:1}' == '123'
  54. assert f'{b:10s}' == '123 '
  55. obj = object()
  56. obj.b = '123'
  57. assert f'{obj.b:10}' == '123 '
  58. assert f'{obj.b:>10}' == ' 123'
  59. assert f'{obj.b:1}' == '123'
  60. assert f'{obj.b:10s}' == '123 '
  61. a = [(1,2), 3, obj]
  62. assert f'{a[0][1]}' == '2'
  63. assert f'abc{a[-1].b:10}==={1234}' == 'abc123 ===1234'
  64. assert f'{"text":10}' == 'text '
  65. assert f'{"test":*>10}' == '******test'
  66. assert f'{"test":*<10}' == 'test******'
  67. assert f'{"test":*^10}' == '***test***'
  68. assert f'{"test":*^11}' == '***test****'
  69. assert f'{12345:0>10}' == '0000012345'
  70. assert f'{obj.b!r:10}' == "'123' "
  71. assert f'{obj.b!r:*>10}' == "*****'123'"
  72. assert f'{obj.b!r:1}' == "'123'"
  73. assert f'{obj.b!r:10s}' == "'123' "
  74. assert f'{"text"!r:10}' == "'text' "
  75. assert f'{"test"!r:*>10}' == "****'test'"
  76. assert f'{"test"!r:*<10}' == "'test'****"
  77. assert f'{"test"!r:*^10}' == "**'test'**"
  78. assert f'{"test"!r:*^11}' == "**'test'***"
  79. assert f'{12345!r:0>10}' == "0000012345"
  80. # test {{ and }}
  81. assert f'' == ''
  82. assert f'{{}}' == '{}'
  83. assert f'{{{{}}}}' == '{{}}'
  84. assert f'{{' == '{'
  85. assert f'}}' == '}'
  86. assert f'{{{{' == '{{'
  87. assert f'}}}}' == '}}'
  88. a = 123
  89. assert f'={a}' == '=123'
  90. assert f'{a}=' == '123='
  91. assert f'--{a}--' == '--123--'
  92. assert f'{{a}}' == '{a}'
  93. assert f'{{{a}}}' == '{123}'
  94. assert f'{{=}}{a}' == '{=}123'
  95. assert f'{a}{{=}}' == '123{=}'
  96. # assert f'}123' == '123' # ignore '}'
  97. # assert f'{{{' == '{' # ignore '{'
  98. class A:
  99. def __repr__(self):
  100. return 'A()'
  101. def __str__(self):
  102. return 'A'
  103. a = A()
  104. assert f'{a!r}' == 'A()'
  105. assert f'{a!r:10}' == 'A() '
  106. assert f'{a:10}' == 'A '
  107. assert f'{a:10}' == 'A '
  108. assert f'{A()!r:10}' == 'A() '
  109. assert f'{A():10}' == 'A '
  110. assert f'{A():10}' == 'A '
  111. a = ['1', '2', '3']
  112. assert f'a = {'\n'.join(a)}' == 'a = 1\n2\n3'