Can';t从美化组文本输出中删除换行符(Python 2.7.5)

Can';t从美化组文本输出中删除换行符(Python 2.7.5),python,text,beautifulsoup,Python,Text,Beautifulsoup,我正试图编写一个程序来解析一系列HTML文件,并将生成的数据存储在一个.csv电子表格中,该电子表格非常依赖于换行符的正确位置。我已经尝试了我能找到的每一种方法,从某些文本片段中剥离换行符,但都无济于事。相关代码如下所示: soup = BeautifulSoup(f) ID = soup.td.get_text() ID.strip() ID.rstrip() ID.replace("\t", "").replace("\r", "").replace("\n", "") dateCreate

我正试图编写一个程序来解析一系列HTML文件,并将生成的数据存储在一个.csv电子表格中,该电子表格非常依赖于换行符的正确位置。我已经尝试了我能找到的每一种方法,从某些文本片段中剥离换行符,但都无济于事。相关代码如下所示:

soup = BeautifulSoup(f)
ID = soup.td.get_text()
ID.strip()
ID.rstrip()
ID.replace("\t", "").replace("\r", "").replace("\n", "")
dateCreated = soup.td.find_next("td").get_text()
dateCreated.replace("\t", "").replace("\r", "").replace("\n", "")
dateCreated.strip()
dateCreated.rstrip()
# debug
print('ID:' + ID + 'Date Created:' + dateCreated)
ID:
FOO
Date Created:
BAR
生成的代码如下所示:

soup = BeautifulSoup(f)
ID = soup.td.get_text()
ID.strip()
ID.rstrip()
ID.replace("\t", "").replace("\r", "").replace("\n", "")
dateCreated = soup.td.find_next("td").get_text()
dateCreated.replace("\t", "").replace("\r", "").replace("\n", "")
dateCreated.strip()
dateCreated.rstrip()
# debug
print('ID:' + ID + 'Date Created:' + dateCreated)
ID:
FOO
Date Created:
BAR
这个问题和同一个程序的另一个问题一直把我逼疯了。帮助会很棒的。谢谢

编辑:算出了,这是一个相当愚蠢的错误。而不仅仅是做

ID.replace("\t", "").replace("\r", "").replace("\n", "")
我应该做的

ID = ID.replace("\t", "").replace("\r", "").replace("\n", "")

尽管这个问题已经得到了回答,但我只是想说,没有什么理由用这种冗长的方式进行替换,实际上你可以这样做:

import re

ID = re.sub(r'[\t\r\n]', '', ID)

尽管通常要避免使用
regex

您手头的问题是,您希望从实际返回新值的操作中获得就地操作

ID.strip() # returns the rstripped value, doesn't change ID.
ID = ID.strip() # Would be more appropriate.
您可以使用正则表达式,尽管正则表达式对于这个过程来说是多余的。现实地说,特别是如果是开头和结尾字符,只需将它们传递给strip:

ID = ID.strip('\t\r\n')

对于BeautifulSoup4,有一个剥离字符串的内部实现

这些字符串往往有很多额外的空格,您可以使用.stripped_strings生成器来删除这些空格:

请尝试打印
repr(ID)
以查看其中可能包含哪些字节?否则,可能尝试使用字符串格式而不是串联?打印repr(ID)和repr(dateCreated)会给我u'\n foo\n'u'\n bar\n'。我已经尝试将替换设置为(u“\n”,u”),但没有任何效果。