txt = "2459,12 is the best number. lets change the dots . with commas , 458,45."
commaindex = 0
while commaindex != -1:
commaindex = txt.find(",",commaindex+1)
if txt[commaindex-1].isnumeric() and txt[commaindex+1].isnumeric():
txt = txt[0:commaindex] + "." + txt[commaindex+1:len(txt)+1]
print(txt)
5条答案
按热度按时间x759pob21#
您可以使用regex执行以下类型的任务:
搜索模式
r'(\d+)(,)(\d+)'
用于查找两个数字之间的逗号。有三个捕获组,因此可以在替换中使用它们:r\1.\3
(\1和\3是第一组和第三组)。old_str是字符串,1是告诉模式只替换第一个匹配项(因此保留34、45)。sdnqo3pr2#
展示如何在没有额外的模块导入的情况下完成这一点可能是有益的。
其思想是在字符串中搜索所有/任何逗号。一旦确定了逗号的索引,就检查两侧的字符(检查数字)。如果观察到这样的模式,就相应地修改字符串
输出:
oxf4rvwz3#
假设您有一个普通的CSV文件(如单行示例所示),我们可以假设有8列,并且您希望将第3列和第4列“合并”在一起。您可以使用正则表达式来完成此操作-如下所示。在这里,我显式地将8列匹配到8个组中-匹配 * 除逗号 * 以外的所有内容作为列值,然后再次写出8列,用逗号分隔除第3列和第4列之外的所有列,在第3列和第4列中我输入了您需要的句点/点。
这个正则表达式是为你的确切数据。有一个通用的正则表达式来取代任何逗号之间的两个连续的数字集可能给予其他数据的错误匹配,但是,所以我认为显式匹配的数据根据确切的列你将是最安全的方式来做。
你可以把上面的正则表达式编码到你的python代码中,如下所示。
正如Tim Biegleisen在一个原始评论中指出的,如果你能访问原始源数据,你会更好地在那里修复格式。
wkftcu5l4#
首先使用s.split()拆分字符串,然后替换第二个元素中的',',替换后再次将字符串连接回来。
huus2vyu5#
如果dot前后都有数字,则将所有逗号更改为点。