我有一个我想要放入列表的文本文件。
文本文件如下所示:
New Distribution Votes Rank Title
0000000125 1196672 9.2 The Shawshank Redemption (1994)
0000000125 829707 9.2 The Godfather (1972)
0000000124 547511 9.0 The Godfather: Part II (1974)
0000000124 1160800 8.9 The Dark Knight (2008)
我尝试使用以下代码拆分列表:
x = open("ratings.list.txt","r")
movread = x.readlines()
x.close()
s = raw_input('Search: ')
for ns in movread:
if s in ns:
print(ns.split()[0:100])
输出:
Search: #1 Single
['1000000103', '56', '6.3', '"#1', 'Single"', '(2006)']
但它没有给我想要的输出
它分裂标题之间的空格。
如何在不破坏标题的情况下将其拆分为列表?
预期产出:
Search: #1 Single
Distribution Votes Rank Title
['1000000103', '56', '6.3', '"#1 Single" (2006)']
答案 0 :(得分:10)
split()
采用可选的maxsplit
参数:
>>> s = " 0000000125 1196672 9.2 The Shawshank Redemption (1994)"
>>> s.split()
['0000000125', '1196672', '9.2', 'The', 'Shawshank', 'Redemption', '(1994)']
>>> s.split(maxsplit=3)
['0000000125', '1196672', '9.2', 'The Shawshank Redemption (1994)']
In Python 2,您需要将maxsplit
参数指定为位置参数:
>>> s = " 0000000125 1196672 9.2 The Shawshank Redemption (1994)"
>>> s.split(None, 3)
['0000000125', '1196672', '9.2', 'The Shawshank Redemption (1994)']
答案 1 :(得分:1)
可能是你可以尝试使用re.split('你的模式,字符串),这应该根据你的正则表达式给你正确的列表。
import re
d = re.split('\s+',s,3)
print d
答案 2 :(得分:1)
阅读docs:
s = " 0000000125 1196672 9.2 The Shawshank Redemption (1994)"
print s.split(None,3)
#output ['0000000125', '1196672', '9.2', 'The Shawshank Redemption (1994)']
答案 3 :(得分:1)
import re
s = input('Search: ').lower()
for ns in open("ratings.list.txt","rt"):
if s in ns.lower():
print(ns.split(maxsplit=3))
答案 4 :(得分:0)
分裂的语法是: str.split([sep [,maxsplit]])
'sep'是用于分割字符串的分隔符(默认情况下,它匹配任何空格字符)
'maxsplit'参数可用于限制否。 Tim提到的分裂
如果您在列之间使用'\ t',则可以使用'\ t'作为分隔符
按照标准惯例,'\ t'用作列的分隔符,以便分割不会干扰字符串中的其他空格。此外,您使用的任何python版本都不存在任何兼容性问题。
希望这会有所帮助:)