问题是它为每个找到的单个数字在新行上打印每个结果.它也忽略了我创建的列表.
我想要做的是将所有数字放在一个列表中.我使用了join()但它不起作用.
代码:
def readfile():
regex = re.compile('\d+')
for num in regex.findall(open('/path/to/file').read()):
lst = [num]
jn = ''.join(lst)
print(jn)
Run Code Online (Sandbox Code Playgroud)
输出:
122
34
764
Run Code Online (Sandbox Code Playgroud)
在您的情况下,regex.findall()返回一个列表,您将加入每次迭代并打印它。
这就是您看到这个问题的原因。
你可以尝试这样的事情。
数字.txt
Xy10Ab
Tiger20
Beta30Man
56
My45one
Run Code Online (Sandbox Code Playgroud)
声明:
>>> import re
>>>
>>> regex = re.compile(r'\d+')
>>> lst = []
>>>
>>> for num in regex.findall(open('numbers.txt').read()):
... lst.append(num)
...
>>> lst
['10', '20', '30', '56', '45']
>>>
>>> jn = ''.join(lst)
>>>
>>> jn
'1020305645'
>>>
>>> jn2 = '\n'.join(lst)
>>> jn2
'10\n20\n30\n56\n45'
>>>
>>> print(jn2)
10
20
30
56
45
>>>
>>> nums = [int(n) for n in lst]
>>> nums
[10, 20, 30, 56, 45]
>>>
>>> sum(nums)
161
>>>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |