Python 删除字符/空白直到第一个选定字符

Python 删除字符/空白直到第一个选定字符,python,Python,下面是一个字符串: . 68.00 68.00 . 我正在尝试删除第一个。第四个。同时在之间添加逗号 输出应如下所示: 68.00,68.00 曾尝试过strip和一些初始字符删除功能,但存在问题,例如。 [1:: 任何帮助都将不胜感激。您可以尝试以下方法: 如果您有更多不同长度的数字,并且您只想要长度为2的数字,您可以尝试以下方法: import re st='.

下面是一个字符串:

.      68.00     68.00          .                                        
我正在尝试删除第一个。第四个。同时在之间添加逗号

输出应如下所示:

68.00,68.00
曾尝试过strip和一些初始字符删除功能,但存在问题,例如。
[1::
任何帮助都将不胜感激。

您可以尝试以下方法:

如果您有更多不同长度的数字,并且您只想要长度为2的数字,您可以尝试以下方法:

import re

st='.      68      67     .     600 '
print(','.join(re.findall('(?<!\d)(\d{2})(?!\d)',st)))   #you can change \d{2}, to \d{n} with n as the length you want 
编辑:
不使用正则表达式的另一个选项:

st='.      68       68     .'
ls=[s for s in st.split() if all(let.isdigit() for let in s)]
print(','.join(ls))
输出:

68.00,68.00
68,68
68,68
对这个问题有效。在这里,我不是删除空格,而是获取数字,这在您的示例中是等效的。然后用
,'连接它们。当然,连接()

>>> import re
>>> inp = '.      68       68          .                                       ' 
>>> print(','.join(re.findall(r'[0-9]+', inp)))
'68,68'

除了使用正则表达式,还可以通过组合替换、拆分和联接函数来实现结果:

x = '.      68       68          .'
result = ','.join(x.replace('.','').split())
您可以执行一个简单(但看起来很复杂)的正则表达式搜索和替换。您可能需要根据需要调整此正则表达式

import re

the_input = '.      68.00       68.00          .     '
print(the_input)

# r = raw string
# the_regex = r'\s*\.\s*(\d+)\s+(\d+)\s+\.\s+'
the_regex = r'\s*\.\s*(\d+\.\d+)\s+(\d+\.\d+)\s+\.\s+' # with decimals numbers
the_output = re.sub(the_regex, r'\1,\2', the_input)
print(the_output)
正则表达式有点复杂,所以这里是它的分解

  • \s*-空间,0或更多
  • \.-一点
  • (\d+)-第一对括号表示捕获组1。第二对是第二组
  • \d+-数字位数,1或更多
  • \s+-空格,1个或更多
在re.sub()中,\1是捕获组1\2是捕获组2

要测试正则表达式并生成解释,请在此处输入正则表达式和输入字符串:


我建议您使用regex101来真正理解这个regex。键入输入,然后慢慢键入正则表达式。任何与正则表达式匹配的内容都会突出显示并进行颜色编码。

如果输入中有两个以上的数字,会发生什么情况?我对这个问题做了一点小小的修改,这是否仍然有效?请参见最后一次编辑@Kingswoop!!我已经稍微修改了这个问题,这个问题是否仍然有效?要包含小数点,您需要相应地更改搜索字符串。比如说,对于
r'[0-9.]+'
我稍微修改了这个问题,这个问题仍然有效吗?我修改了我的答案。我编辑并测试了它。很好。
import re

the_input = '.      68.00       68.00          .     '
print(the_input)

# r = raw string
# the_regex = r'\s*\.\s*(\d+)\s+(\d+)\s+\.\s+'
the_regex = r'\s*\.\s*(\d+\.\d+)\s+(\d+\.\d+)\s+\.\s+' # with decimals numbers
the_output = re.sub(the_regex, r'\1,\2', the_input)
print(the_output)