diff --git a/pyupgrade.py b/pyupgrade.py
index dab7eb2..bcd4250 100644
--- a/pyupgrade.py
+++ b/pyupgrade.py
@@ -1058,6 +1058,10 @@ def _fix_percent_format(contents_text: str) -> str:
         if node is None:
             continue
 
+        # TODO: handle \N escape sequences
+        if r'\N' in token.src:
+            continue
+
         if isinstance(node.right, ast.Tuple):
             _fix_percent_format_tuple(tokens, i, node)
         elif isinstance(node.right, ast.Dict):
@@ -2255,6 +2259,10 @@ def _fix_fstrings(contents_text: str) -> str:
         if node is None:
             continue
 
+        # TODO: handle \N escape sequences
+        if r'\N' in token.src:
+            continue
+
         paren = i + 3
         if tokens_to_src(tokens[i + 1:paren + 1]) != '.format(':
             continue

diff --git a/tests/format_literals_test.py b/tests/format_literals_test.py
index ae656d1..f3610a1 100644
--- a/tests/format_literals_test.py
+++ b/tests/format_literals_test.py
@@ -49,6 +49,8 @@ def test_intentionally_not_round_trip(s, expected):
         "'{' '0}'.format(1)",
         # comment looks like placeholder but is not!
         '("{0}" # {1}\n"{2}").format(1, 2, 3)',
+        # TODO: this works by accident (extended escape treated as placeholder)
+        r'"\N{snowman} {}".format(1)',
     ),
 )
 def test_format_literals_noop(s):
diff --git a/tests/fstrings_test.py b/tests/fstrings_test.py
index d850293..2090930 100644
--- a/tests/fstrings_test.py
+++ b/tests/fstrings_test.py
@@ -26,6 +26,8 @@ from pyupgrade import _fix_fstrings
         '"{:{}}".format(x, y)',
         '"{a[b]}".format(a=a)',
         '"{a.a[b]}".format(a=a)',
+        # TODO: handle \N escape sequences
+        r'"\N{snowman} {}".format(a)',
         # not enough placeholders / placeholders missing
         '"{}{}".format(a)', '"{a}{b}".format(a=a)',
     ),
diff --git a/tests/percent_format_test.py b/tests/percent_format_test.py
index 6301620..e1c5f8d 100644
--- a/tests/percent_format_test.py
+++ b/tests/percent_format_test.py
@@ -176,6 +176,8 @@ def test_simplify_conversion_flag(s, expected):
         '"%(and)s" % {"and": 2}',
         # invalid string formats
         '"%" % {}', '"%(hi)" % {}', '"%2" % {}',
+        # TODO: handle \N escape sequences
+        r'"%s \N{snowman}" % (a,)',
     ),
 )
 def test_percent_format_noop(s):

Valid f-string conversion throws KeyError
While working on a conversion project, I noticed that certain files would throw `KeyError`'s for `\N{...}` strings.

A minimal test case looks like:
```python
world = "world"
print("hello {} \N{snowman}".format(world))
```

Which I would expect to be left alone or rewritten as:
```python
world = "world"
print(f"hello {world} \N{snowman}")
```

I had trouble reproducing it in pytests. This seemed to trigger the same error:
```diff
diff --git tests/fstrings_test.py tests/fstrings_test.py
index d850293..a772a0f 100644
--- tests/fstrings_test.py
+++ tests/fstrings_test.py
@@ -48,6 +48,7 @@ def test_fix_fstrings_noop(s):
         ('"hello {}!".format(name)', 'f"hello {name}!"'),
         ('"{}{{}}{}".format(escaped, y)', 'f"{escaped}{{}}{y}"'),
         ('"{}{b}{}".format(a, c, b=b)', 'f"{a}{b}{c}"'),
+        (r'"{}\N{snowman}".format(a)', r'f"{a}\N{snowman}"'),
         # TODO: poor man's f-strings?
         # '"{foo}".format(**locals())'
     ),
```
tests/fstrings_test.py::test_fix_fstrings_noop["\\N{snowman} tests/percent_format_test.py::test_percent_format_noop["%s
tests/format_literals_test.py::test_roundtrip_text[] tests/format_literals_test.py::test_roundtrip_text[foo] tests/format_literals_test.py::test_roundtrip_text[{}] tests/format_literals_test.py::test_roundtrip_text[{0}] tests/format_literals_test.py::test_roundtrip_text[{named}] tests/format_literals_test.py::test_roundtrip_text[{!r}] tests/format_literals_test.py::test_roundtrip_text[{:>5}] tests/format_literals_test.py::test_roundtrip_text[{{] tests/format_literals_test.py::test_roundtrip_text[}}] tests/format_literals_test.py::test_roundtrip_text[{0!s:15}] tests/format_literals_test.py::test_intentionally_not_round_trip[{:}-{}] tests/format_literals_test.py::test_intentionally_not_round_trip[{0:}-{0}] tests/format_literals_test.py::test_intentionally_not_round_trip[{0!r:}-{0!r}] tests/format_literals_test.py::test_format_literals_noop["{0}"format(1)] tests/format_literals_test.py::test_format_literals_noop['{}'.format(1)] tests/format_literals_test.py::test_format_literals_noop['{'.format(1)] tests/format_literals_test.py::test_format_literals_noop['}'.format(1)] tests/format_literals_test.py::test_format_literals_noop[x tests/format_literals_test.py::test_format_literals_noop['{0} tests/format_literals_test.py::test_format_literals_noop['{0:<{1}}'.format(1, tests/format_literals_test.py::test_format_literals_noop['{' tests/format_literals_test.py::test_format_literals_noop[("{0}" tests/format_literals_test.py::test_format_literals_noop["\\N{snowman} tests/format_literals_test.py::test_format_literals['{0}'.format(1)-'{}'.format(1)] tests/format_literals_test.py::test_format_literals['{0:x}'.format(30)-'{:x}'.format(30)] tests/format_literals_test.py::test_format_literals[x tests/format_literals_test.py::test_format_literals['''{0}\n{1}\n'''.format(1, tests/format_literals_test.py::test_format_literals['{0}' tests/format_literals_test.py::test_format_literals[print(\n tests/format_literals_test.py::test_format_literals[("{0}").format(1)-("{}").format(1)] tests/fstrings_test.py::test_fix_fstrings_noop[(] tests/fstrings_test.py::test_fix_fstrings_noop['{'.format(a)] tests/fstrings_test.py::test_fix_fstrings_noop['}'.format(a)] tests/fstrings_test.py::test_fix_fstrings_noop["{}" tests/fstrings_test.py::test_fix_fstrings_noop["{}".format(\n tests/fstrings_test.py::test_fix_fstrings_noop["{} tests/fstrings_test.py::test_fix_fstrings_noop["{foo} tests/fstrings_test.py::test_fix_fstrings_noop["{0} tests/fstrings_test.py::test_fix_fstrings_noop["{x} tests/fstrings_test.py::test_fix_fstrings_noop["{x.y} tests/fstrings_test.py::test_fix_fstrings_noop[b"{} tests/fstrings_test.py::test_fix_fstrings_noop["{:{}}".format(x, tests/fstrings_test.py::test_fix_fstrings_noop["{a[b]}".format(a=a)] tests/fstrings_test.py::test_fix_fstrings_noop["{a.a[b]}".format(a=a)] tests/fstrings_test.py::test_fix_fstrings_noop["{}{}".format(a)] tests/fstrings_test.py::test_fix_fstrings_noop["{a}{b}".format(a=a)] tests/fstrings_test.py::test_fix_fstrings["{} tests/fstrings_test.py::test_fix_fstrings["{1} tests/fstrings_test.py::test_fix_fstrings["{x.y}".format(x=z)-f"{z.y}"] tests/fstrings_test.py::test_fix_fstrings["{.x} tests/fstrings_test.py::test_fix_fstrings["{}".format(a())-f"{a()}"] tests/fstrings_test.py::test_fix_fstrings["{}".format(a.b())-f"{a.b()}"] tests/fstrings_test.py::test_fix_fstrings["{}".format(a.b().c())-f"{a.b().c()}"] tests/fstrings_test.py::test_fix_fstrings["hello tests/fstrings_test.py::test_fix_fstrings["{}{{}}{}".format(escaped, tests/fstrings_test.py::test_fix_fstrings["{}{b}{}".format(a, tests/percent_format_test.py::test_parse_percent_format[""-expected0] tests/percent_format_test.py::test_parse_percent_format["%%"-expected1] tests/percent_format_test.py::test_parse_percent_format["%s"-expected2] tests/percent_format_test.py::test_parse_percent_format["%s tests/percent_format_test.py::test_parse_percent_format["%(hi)s"-expected4] tests/percent_format_test.py::test_parse_percent_format["%()s"-expected5] tests/percent_format_test.py::test_parse_percent_format["%#o"-expected6] tests/percent_format_test.py::test_parse_percent_format["% tests/percent_format_test.py::test_parse_percent_format["%5d"-expected8] tests/percent_format_test.py::test_parse_percent_format["%*d"-expected9] tests/percent_format_test.py::test_parse_percent_format["%.f"-expected10] tests/percent_format_test.py::test_parse_percent_format["%.5f"-expected11] tests/percent_format_test.py::test_parse_percent_format["%.*f"-expected12] tests/percent_format_test.py::test_parse_percent_format["%ld"-expected13] tests/percent_format_test.py::test_parse_percent_format["%(complete)#4.4f"-expected14] tests/percent_format_test.py::test_percent_to_format[%s-{}] tests/percent_format_test.py::test_percent_to_format[%%%s-%{}] tests/percent_format_test.py::test_percent_to_format[%(foo)s-{foo}] tests/percent_format_test.py::test_percent_to_format[%2f-{:2f}] tests/percent_format_test.py::test_percent_to_format[%r-{!r}] tests/percent_format_test.py::test_percent_to_format[%a-{!a}] tests/percent_format_test.py::test_simplify_conversion_flag[-] tests/percent_format_test.py::test_simplify_conversion_flag[ tests/percent_format_test.py::test_simplify_conversion_flag[#0- tests/percent_format_test.py::test_simplify_conversion_flag[--<] tests/percent_format_test.py::test_percent_format_noop["%s" tests/percent_format_test.py::test_percent_format_noop[b"%s" tests/percent_format_test.py::test_percent_format_noop["%*s" tests/percent_format_test.py::test_percent_format_noop["%.*s" tests/percent_format_test.py::test_percent_format_noop["%d" tests/percent_format_test.py::test_percent_format_noop["%i" tests/percent_format_test.py::test_percent_format_noop["%u" tests/percent_format_test.py::test_percent_format_noop["%c" tests/percent_format_test.py::test_percent_format_noop["%#o" tests/percent_format_test.py::test_percent_format_noop["%()s" tests/percent_format_test.py::test_percent_format_noop["%4%" tests/percent_format_test.py::test_percent_format_noop["%.2r" tests/percent_format_test.py::test_percent_format_noop["%.2a" tests/percent_format_test.py::test_percent_format_noop[i tests/percent_format_test.py::test_percent_format_noop["%(1)s" tests/percent_format_test.py::test_percent_format_noop["%(a)s" tests/percent_format_test.py::test_percent_format_noop["%(ab)s" tests/percent_format_test.py::test_percent_format_noop["%(and)s" tests/percent_format_test.py::test_percent_format_noop["%" tests/percent_format_test.py::test_percent_format_noop["%(hi)" tests/percent_format_test.py::test_percent_format_noop["%2" tests/percent_format_test.py::test_percent_format["trivial" tests/percent_format_test.py::test_percent_format["%s" tests/percent_format_test.py::test_percent_format["%s%% tests/percent_format_test.py::test_percent_format["%3f" tests/percent_format_test.py::test_percent_format["%-5s" tests/percent_format_test.py::test_percent_format["%9s" tests/percent_format_test.py::test_percent_format["brace tests/percent_format_test.py::test_percent_format["%(k)s" tests/percent_format_test.py::test_percent_format["%(to_list)s"