diff --git a/Lib/netrc.py b/Lib/netrc.py
index 723fc31..4caeb96 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 50afe76..a988430 100644
--- a/Lib/test/test_netrc.py
+++ b/Lib/test/test_netrc.py
@@ -3,7 +3,13 @@
 from test import test_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,18 +34,21 @@
         fp = open(temp_filename, mode)
         fp.write(TEST_NETRC)
         fp.close()
-        self.netrc = netrc.netrc(temp_filename)
+        self.nrc = netrc.netrc(temp_filename)
 
     def tearDown (self):
-        del self.netrc
         os.unlink(temp_filename)
 
     def test_case_1(self):
-        self.assertTrue(self.netrc.macros == {'macro1':['line1\n', 'line2\n'],
-                                           'macro2':['line3\n', 'line4\n']}
-                                           )
-        self.assertTrue(self.netrc.hosts['foo'] == ('log1', 'acct1', 'pass1'))
-        self.assertTrue(self.netrc.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():
     test_support.run_unittest(NetrcTestCase)
diff --git a/Misc/ACKS b/Misc/ACKS
index 4d2d4bb..4cd8350 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -472,6 +472,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 367900d..89894d8 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -13,6 +13,8 @@
 Library
 -------
 
+- Issue #10464: netrc now correctly handles lines with embedded '#' characters.
+
 
 What's New in Python 2.7.1?
 ===========================
