diff --git a/Lib/netrc.py b/Lib/netrc.py
index 90255df8..a60b8b7 100644
--- a/Lib/netrc.py
+++ b/Lib/netrc.py
@@ -34,11 +34,15 @@
     def _parse(self, file, fp):
         lexer = shlex.shlex(fp)
         lexer.wordchars += r"""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"""
+        lexer.commenters = lexer.commenters.replace('#', '')
         while 1:
             # Look for a machine, default, or macdef top-level keyword
             toplevel = tt = lexer.get_token()
             if not tt:
                 break
+            elif tt[0] == '#':
+                fp.readline();
+                continue;
             elif tt == 'machine':
                 entryname = lexer.get_token()
             elif tt == 'default':
diff --git a/Lib/test/test_netrc.py b/Lib/test/test_netrc.py
index 21ff88c..da7ec05 100644
--- a/Lib/test/test_netrc.py
+++ b/Lib/test/test_netrc.py
@@ -3,7 +3,13 @@
 from test import support
 
 TEST_NETRC = """
+
+ #this is a comment
+#this is a comment
+# this is a comment
+
 machine foo login log1 password pass1 account acct1
+machine bar login log1 password pass# account acct1
 
 macdef macro1
 line1
@@ -28,17 +34,21 @@
         fp = open(temp_filename, mode)
         fp.write(TEST_NETRC)
         fp.close()
+        self.nrc = netrc.netrc(temp_filename)
 
     def tearDown(self):
         os.unlink(temp_filename)
 
     def test_case_1(self):
-        nrc = netrc.netrc(temp_filename)
-        self.assertTrue(nrc.macros == {'macro1':['line1\n', 'line2\n'],
-                                           'macro2':['line3\n', 'line4\n']}
-                                           )
-        self.assertTrue(nrc.hosts['foo'] == ('log1', 'acct1', 'pass1'))
-        self.assertTrue(nrc.hosts['default'] == ('log2', None, 'pass2'))
+        self.assertEqual(self.nrc.hosts['foo'], ('log1', 'acct1', 'pass1'))
+        self.assertEqual(self.nrc.hosts['default'], ('log2', None, 'pass2'))
+
+    def test_macros(self):
+        self.assertEqual(self.nrc.macros, {'macro1':['line1\n', 'line2\n'],
+                                           'macro2':['line3\n', 'line4\n']})
+
+    def test_parses_passwords_with_hash_character(self):
+        self.assertEqual(self.nrc.hosts['bar'], ('log1', 'acct1', 'pass#'))
 
 def test_main():
     support.run_unittest(NetrcTestCase)
diff --git a/Misc/ACKS b/Misc/ACKS
index 1aa9613..0f7ed37 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -501,6 +501,7 @@
 Christopher Tur Lesniewski-Laas
 Mark Levinson
 William Lewis
+Xuanji Li
 Robert van Liere
 Ross Light
 Shawn Ligocki
diff --git a/Misc/NEWS b/Misc/NEWS
index 494087c..adec2df 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -46,6 +46,8 @@
 Library
 -------
 
+- Issue #10464: netrc now correctly handles lines with embedded '#' characters.
+
 - Added itertools.accumulate().
 
 - Issue #4113: Added custom ``__repr__`` method to ``functools.partial``.
