我使用此代码拆分数据以生成包含三个子列表的列表。 有*或 - 时分开。但它也读到了\ n \ n * ..不知道为什么? 我不想读那些?谁能告诉我我做错了什么? 这是数据
*每日报价 - 教育是能够倾听几乎任何事情而不会发脾气或自信 - 罗伯特弗罗斯特 - 当被学习的东西被遗忘时,教育是幸存的--B。F. Skinner *每日事实 -Fractals是混沌理论的重要组成部分,在研究大量领域时非常有用。它们存在于整个自然界中,因此可用于帮助预测自然界中的许多事物。它们还可以帮助模拟自然,如电影的图形设计(动画云等),或预测自然的行为。 - 根据Just-Eat最近的一项调查,并不是英国的每个人都知道苏格兰人的美味,哈吉斯是什么。在接受调查的1,623名英国人中:\ n \ n * 18%的英国人认为哈吉斯是某种苏格兰动物。\ n \ n * 15%的人认为这是一种苏格兰乐器。\ n \ n * 4%的人认为它是来自哈利波特的一个角色。\ n \ n * 41%的人甚至不知道苏格兰的国菜是什么。\ n \ n虽然少数苏格兰人承认不知道哈吉斯是什么,但他们也发现68%的苏格兰人会喜欢看到Haggis作为外卖。 - 随着Facebook越来越多的担忧及其不断变化的隐私设置,一些软件开发人员现在设计了一个网站,允许用户浏览没有正确隐私设置的任何人的状态更新,以防止它。\ n \ nNamed Openbook,该网站的最终目标是进一步向公众公开Facebook及其隐私设置的问题,并向人们展示访问有关完全陌生人的此类信息是多么容易。该网站作为搜索引擎工作,因此很容易搜索“不要告诉任何人”或“我讨厌我的老板”等术语,搜索也可以按性别缩小。 *每日宠物 - 苏格兰梗 - 鲨鱼 -仓鼠 - 谢谢飞 结束
我使用此代码:
contents = open("data.dat").read()
data = contents.split('*') #split the data at the '*'
newlist = [item.split("-") for item in data if item]
使错误类似于我必须得到的列表
答案 0 :(得分:2)
“\ n \ n”是输入数据的一部分,因此它保存在python中。只需添加一个strip()即可将其删除:
finallist = [item.strip() for item in newlist]
请参阅strip()文档:http://docs.python.org/library/stdtypes.html#str.strip
评论更新:
finallist = [item.replace("\\n", "\n").strip() for item in newlist]
答案 1 :(得分:1)
open(“data.dat”)。read() - 读取文件中的所有符号,而不仅仅是你想要的符号。 如果你不需要'\ n',你可以尝试content.replace(“\ n”,“”)或读取行(不是整个内容),并截断每行的最后一个符号'\ n'。
答案 2 :(得分:0)
这将拆分文本中的任何星号。
更好的实施方式是做:
lines = []
for line in open("data.dat"):
if line.lstrip.startswith("*"):
lines.append([line.strip()]) # append a list with your line
elif line.lstrip.startswith("-"):
lines[-1].append(line.strip())
要获得更多家庭作业,请研究以这种方式使用open()函数时发生的事情。
答案 3 :(得分:0)
以下解决了我的问题:
result = [ [subitem.replace(r'\n\n', '\n') for subitem in item.split('\n-')]
for item in open('data.txt').read().split('\n*') ]
# now let's pretty print the result
for i in result:
print '***', i[0], '***'
for j in i[1:]:
print '\t--', j
print
注意我在新行+ *
或-
上拆分,这样就不会在文本内部的短划线上拆分。另外,我用新的换行符\
替换文字字符序列n
\
n
r'\n\n'
('\n'
)。单线表达式是列表理解,一种在一个gulp中构建列表的方法,没有多个.append()
或+