Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用re设置Python列表的格式_Python_List - Fatal编程技术网

使用re设置Python列表的格式

使用re设置Python列表的格式,python,list,Python,List,如何在列表中格式化此字符串 发件人: 致: 我认为方法是使用re.sub(),但我遇到了“\n”不转义的问题您不需要re.sub,str.split就足够了 t = ('1496\n8584\n172\n5988\n7184\n704\n3448\n6580\n8504\n', '') out = t[0].split() # out : ['1496', '8584', '172', '5988', '7184', '704', '3448', '6580', '8504'] 如果您希望

如何在列表中格式化此字符串 发件人:

致:


我认为方法是使用re.sub(),但我遇到了“\n”不转义的问题

您不需要
re.sub
str.split
就足够了

t = ('1496\n8584\n172\n5988\n7184\n704\n3448\n6580\n8504\n', '')

out = t[0].split()

# out : ['1496', '8584', '172', '5988', '7184', '704', '3448', '6580', '8504']
如果您希望它完全符合您提供的格式,您可以回溯到
元组。请注意,当您使用
(…)
时,您创建的是一个
元组,而不是您提到的
列表

out = tuple(t[0].split())

# out : ('1496', '8584', '172', '5988', '7184', '704', '3448', '6580', '8504')

不要使用
re.sub
,而是使用
re.findall
获取每一行数字:

import re
s = ('1496\n8584\n172\n5988\n7184\n704\n3448\n6580\n8504\n', '')
new_s = tuple(i for b in map(lambda x:re.findall('\d+', x), filter(None, s)) for i in b)
输出:

('1496', '8584', '172', '5988', '7184', '704', '3448', '6580', '8504')
希望这能奏效-

a='1496\n8584\n172\n5988\n7184\n704\n3448\n6580\n8504\n'
b=a.split()
print(b)
输出-

['1496', '8584', '172', '5988', '7184', '704', '3448', '6580', '8504']
a.split()。对字符串使用函数

#!/usr/bin/python
s = ('1496\n8584\n172\n5988\n7184\n704\n3448\n6580\n8504\n', '')
output=s[0].split()
print(output)
您期望的输出为列表:

['1496', '8584', '172', '5988', '7184', '704', '3448', '6580', '8504']
如果您想获得元组,请使用函数进行转换

#!/usr/bin/python
s = ('1496\n8584\n172\n5988\n7184\n704\n3448\n6580\n8504\n', '')
output=tuple(s[0].split())
print(output)
输出为元组:

('1496', '8584', '172', '5988', '7184', '704', '3448', '6580', '8504')

在python中,元组和列表之间的差异是可以得到的。

这段代码解决了我的问题

output = ('1496\n8584\n172\n5988\n7184\n704\n3448\n6580\n8504\n', '')
output = str(output)
output = re.sub('[^a-zA-Z0-9 .]|n','',output)
output = output.split()
print output

您的意思是这个字符串-'1496\n8584\n172\n5988\n7184\n704\n3448\n6580\n8504\n'所以是的。。。顺便说一句你说你需要一个列表,
[…]
,但你正在使用一个元组,
(…)
,你能澄清一下吗?@Olivier:我想tommy45不知道python中元组和列表的区别。@TigerTV.ru有道理,他们现在就会知道为什么
t
是元组了?它增加了不必要的复杂性,只需从问题中的字符串开始。@avigil因为问题已被编辑,所以我只是做了一次回滚以保留最初的意图,即在列表/元组中包含字符串。或者只需使用
.split()
使用连续的空白字符作为单个分隔符,这样就不会出现尾随的空项。对于OPs的例子来说应该很好。说得好。谢谢我编辑以包含您的评论。@Olivier请让用户澄清。
('1496', '8584', '172', '5988', '7184', '704', '3448', '6580', '8504')
output = ('1496\n8584\n172\n5988\n7184\n704\n3448\n6580\n8504\n', '')
output = str(output)
output = re.sub('[^a-zA-Z0-9 .]|n','',output)
output = output.split()
print output