style: use .format() instead of % formatting
diff --git a/examples/at_protocol.py b/examples/at_protocol.py
index 36eb6bd..e3a9bde 100644
--- a/examples/at_protocol.py
+++ b/examples/at_protocol.py
@@ -91,7 +91,7 @@
                     else:
                         lines.append(line)
                 except queue.Empty:
-                    raise ATException('AT command timeout (%r)' % (command,))
+                    raise ATException('AT command timeout ({!r})'.format(command))
 
 
 # test
@@ -123,16 +123,16 @@
             """Handle events and command responses starting with '+...'"""
             if event.startswith('+RRBDRES') and self._awaiting_response_for.startswith('AT+JRBD'):
                 rev = event[9:9 + 12]
-                mac = ':'.join('%02X' % ord(x) for x in rev.decode('hex')[::-1])
+                mac = ':'.join('{:02X}'.format(ord(x)) for x in rev.decode('hex')[::-1])
                 self.event_responses.put(mac)
             else:
-                logging.warning('unhandled event: %r' % event)
+                logging.warning('unhandled event: {!r}'.format(event))
 
         def command_with_event_response(self, command):
             """Send a command that responds with '+...' line"""
             with self.lock:  # ensure that just one thread is sending commands at once
                 self._awaiting_response_for = command
-                self.transport.write(b'%s\r\n' % (command.encode(self.ENCODING, self.UNICODE_HANDLING),))
+                self.transport.write(b'{}\r\n'.format(command.encode(self.ENCODING, self.UNICODE_HANDLING)))
                 response = self.event_responses.get()
                 self._awaiting_response_for = None
                 return response
diff --git a/examples/port_publisher.py b/examples/port_publisher.py
index cf44945..ae07f77 100755
--- a/examples/port_publisher.py
+++ b/examples/port_publisher.py
@@ -86,7 +86,7 @@
             self.group = None
 
     def __str__(self):
-        return "%r @ %s:%s (%s)" % (self.name, self.host, self.port, self.stype)
+        return "{!r} @ {}:{} ({})".format(self.name, self.host, self.port, self.stype)
 
 
 class Forwarder(ZeroconfService):
@@ -154,7 +154,7 @@
             self.handle_server_error()
             #~ raise
         if self.log is not None:
-            self.log.info("%s: Waiting for connection on %s..." % (self.device, self.network_port))
+            self.log.info("{}: Waiting for connection on {}...".format(self.device, self.network_port))
 
         # zeroconfig
         self.publish()
@@ -165,7 +165,7 @@
     def close(self):
         """Close all resources and unpublish service"""
         if self.log is not None:
-            self.log.info("%s: closing..." % (self.device, ))
+            self.log.info("{}: closing...".format(self.device))
         self.alive = False
         self.unpublish()
         if self.server_socket:
@@ -291,7 +291,7 @@
             self.socket.setblocking(0)
             self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
             if self.log is not None:
-                self.log.warning('%s: Connected by %s:%s' % (self.device, addr[0], addr[1]))
+                self.log.warning('{}: Connected by {}:{}'.format(self.device, addr[0], addr[1]))
             self.serial.rts = True
             self.serial.dtr = True
             if self.log is not None:
@@ -302,7 +302,7 @@
             # reject connection if there is already one
             connection.close()
             if self.log is not None:
-                self.log.warning('%s: Rejecting connect from %s:%s' % (self.device, addr[0], addr[1]))
+                self.log.warning('{}: Rejecting connect from {}:{}'.format(self.device, addr[0], addr[1]))
 
     def handle_server_error(self):
         """Socket server fails"""
@@ -326,7 +326,7 @@
                 self.socket.close()
                 self.socket = None
                 if self.log is not None:
-                    self.log.warning('%s: Disconnected' % self.device)
+                    self.log.warning('{}: Disconnected'.format(self.device))
 
 
 def test():
@@ -451,7 +451,7 @@
                 # exit first parent
                 sys.exit(0)
         except OSError as e:
-            log.critical("fork #1 failed: %d (%s)\n" % (e.errno, e.strerror))
+            log.critical("fork #1 failed: {} ({})\n".format(e.errno, e.strerror))
             sys.exit(1)
 
         # decouple from parent environment
@@ -465,10 +465,10 @@
             if pid > 0:
                 # exit from second parent, save eventual PID before
                 if args.pidfile is not None:
-                    open(args.pidfile, 'w').write("%d" % pid)
+                    open(args.pidfile, 'w').write("{}".formt(pid))
                 sys.exit(0)
         except OSError as e:
-            log.critical("fork #2 failed: %d (%s)\n" % (e.errno, e.strerror))
+            log.critical("fork #2 failed: {} ({})\n".format(e.errno, e.strerror))
             sys.exit(1)
 
         if args.logfile is None:
@@ -512,7 +512,7 @@
         except KeyError:
             pass
         else:
-            log.info("unpublish: %s" % (forwarder))
+            log.info("unpublish: {}".format(forwarder))
 
     alive = True
     next_check = 0
@@ -526,7 +526,7 @@
                 connected = [d for d, p, i in serial.tools.list_ports.grep(args.ports_regex)]
                 # Handle devices that are published, but no longer connected
                 for device in set(published).difference(connected):
-                    log.info("unpublish: %s" % (published[device]))
+                    log.info("unpublish: {}".format(published[device]))
                     unpublish(published[device])
                 # Handle devices that are connected but not yet published
                 for device in sorted(set(connected).difference(published)):
@@ -537,11 +537,11 @@
                         port += 1
                     published[device] = Forwarder(
                         device,
-                        "%s on %s" % (device, hostname),
+                        "{} on {}".format(device, hostname),
                         port,
                         on_close=unpublish,
                         log=log)
-                    log.warning("publish: %s" % (published[device]))
+                    log.warning("publish: {}".format(published[device]))
                     published[device].open()
 
             # select_start = time.time()
diff --git a/examples/rfc2217_server.py b/examples/rfc2217_server.py
index 7830e40..5955fc0 100755
--- a/examples/rfc2217_server.py
+++ b/examples/rfc2217_server.py
@@ -58,7 +58,7 @@
                     # escape outgoing data when needed (Telnet IAC (0xff) character)
                     self.write(serial.to_bytes(self.rfc2217.escape(data)))
             except socket.error as msg:
-                self.log.error('%s' % (msg,))
+                self.log.error('{}'.format(msg))
                 # probably got disconnected
                 break
         self.alive = False
@@ -78,7 +78,7 @@
                     break
                 self.serial.write(serial.to_bytes(self.rfc2217.filter(data)))
             except socket.error as msg:
-                self.log.error('%s' % (msg,))
+                self.log.error('{}'.format(msg))
                 # probably got disconnected
                 break
         self.stop()
diff --git a/examples/tcp_serial_redirect.py b/examples/tcp_serial_redirect.py
index 97a73b4..1d8b917 100755
--- a/examples/tcp_serial_redirect.py
+++ b/examples/tcp_serial_redirect.py
@@ -146,7 +146,7 @@
                             break
                         ser.write(data)                 # get a bunch of bytes and send them
                     except socket.error as msg:
-                        sys.stderr.write('ERROR: %s\n' % msg)
+                        sys.stderr.write('ERROR: {}\n'.format(msg))
                         # probably got disconnected
                         break
             except socket.error as msg:
diff --git a/examples/wxSerialConfigDialog.py b/examples/wxSerialConfigDialog.py
index a29b67d..0064a9c 100755
--- a/examples/wxSerialConfigDialog.py
+++ b/examples/wxSerialConfigDialog.py
@@ -99,7 +99,7 @@
         self.choice_port.Clear()
         self.ports = []
         for n, (portname, desc, hwid) in enumerate(sorted(serial.tools.list_ports.comports())):
-            self.choice_port.Append('%s - %s' % (portname, desc))
+            self.choice_port.Append(u'{} - {}'.format(portname, desc))
             self.ports.append(portname)
             if self.serial.name == portname:
                 preferred_index = n
@@ -115,7 +115,7 @@
             if preferred_index is not None:
                 self.combo_box_baudrate.SetSelection(preferred_index)
             else:
-                self.combo_box_baudrate.SetValue(u'%d' % (self.serial.baudrate,))
+                self.combo_box_baudrate.SetValue(u'{}'.format(self.serial.baudrate))
         if self.show & SHOW_FORMAT:
             # fill in data bits and select current setting
             self.choice_databits.Clear()
diff --git a/examples/wxTerminal.py b/examples/wxTerminal.py
index 4ebabb7..0811721 100755
--- a/examples/wxTerminal.py
+++ b/examples/wxTerminal.py
@@ -274,15 +274,15 @@
                         dlg.ShowModal()
                 else:
                     self.StartThread()
-                    self.SetTitle("Serial Terminal on %s [%s,%s,%s,%s%s%s]" % (
-                            self.serial.portstr,
-                            self.serial.baudrate,
-                            self.serial.bytesize,
-                            self.serial.parity,
-                            self.serial.stopbits,
-                            ' RTS/CTS' if self.serial.rtscts else '',
-                            ' Xon/Xoff' if self.serial.xonxoff else '',
-                            ))
+                    self.SetTitle("Serial Terminal on {} [{},{},{},{}{}{}]".format(
+                        self.serial.portstr,
+                        self.serial.baudrate,
+                        self.serial.bytesize,
+                        self.serial.parity,
+                        self.serial.stopbits,
+                        ' RTS/CTS' if self.serial.rtscts else '',
+                        ' Xon/Xoff' if self.serial.xonxoff else '',
+                        ))
                     ok = True
             else:
                 # on startup, dialog aborted