python字符串能减吗_在python中减去两个字符串(Subtract two strings in python)

在python中减去两个字符串(Subtract two strings in python)

我应该计算两个不同列表的元素之间的差异。 这是我的代码:

import operator

a = ['5', '35.1', 'FFD']

b = ['8.5', '11.3', 'AMM']

difference = [each[0] - each[1] for each in zip(b, a)]

print difference

我需要这个输出:

ba = ['3.5',' - 23.8','AMM-FFD']

我收到以下错误:

不支持的操作数类型 - :'str'和'str'

我不想使用像numpy或pandas这样的任何类

I should calculate the difference between elements two different list. This is my code :

import operator

a = ['5', '35.1', 'FFD']

b = ['8.5', '11.3', 'AMM']

difference = [each[0] - each[1] for each in zip(b, a)]

print difference

I need this output:

b-a = ['3.5','-23.8','AMM-FFD']

I receive the following error:

unsupported operand type(s) for -: 'str' and 'str'

I don't want to use any class like numpy or pandas

原文:https://stackoverflow.com/questions/40592194

2020-05-09 08:05

满意答案

您需要将数字转换为float ,如果元素无法转换为数字,请在它们之间插入'-' 。

diffs = []

for i, j in zip(a, b):

try:

diffs.append(str(float(j) - float(i)))

except ValueError:

diffs.append('-'.join([j, i]))

>>> print(diffs)

['3.5', '-23.8', 'AMM-FFD']

由于python是强类型的(不要与静态与动态混淆),如果遇到字符串之间的算术运算符,它就不会隐式地对字符串的数值解释执行算术运算。 对于字符串,减号运算符没有明显的行为,因为存在明显的加号行为(即连接)。 你希望它从第一个字符串中删除第二个字符串的实例吗? 如果是这样,那么您可以使用更明确的str.replace方法。 或者,如果第一个字符串以第二个字符串结尾,您是否希望它从第一个字符串中删除第二个字符串? 预期的行为并非100%明显,因此python作者没有包含对字符串的__sub__方法支持。

此外,您的代码中未使用operator模块,因此无需导入它。

You need to convert numbers to floats, and if the elements cannot be converted to numbers, insert a '-' between them.

diffs = []

for i, j in zip(a, b):

try:

diffs.append(str(float(j) - float(i)))

except ValueError:

diffs.append('-'.join([j, i]))

>>> print(diffs)

['3.5', '-23.8', 'AMM-FFD']

Since python is strongly typed (not to be confused with static vs. dynamic) it does not implicitly perform arithmetic on the numeric interpretation of strings if it encounters an arithmetic operator between strings. There is no obvious behavior of the minus operator with regard to strings the way there is an obvious behavior of plus (i.e., concatenate). Would you expect it to remove instances of the second string from the first string? If so, there's already a more explicit str.replace method you can use. Or would you expect it to remove the second string from the first only if the first string ends with the second string? The expected behavior isn't 100% obvious, so the python authors did not include __sub__ method support for strings.

Also, the operator module isn't used in your code, so no need to import it.

2016-11-14

相关问答

您可以将字符转换为整数和异或: l = [ord(a) ^ ord(b) for a,b in zip(s1,s2)]

这是一个更新的函数,以防XOR导致您需要字符串: def sxor(s1,s2):

# convert strings to a list of character pair tuples

# go through each tuple, converting them to ASCII code (ord)

# perform exclusiv...

>>> a = "column_number"

>>> b = "_url1"

>>> x = 1234

>>> globals()[a + b] = x

>>> column_number_url1

1234

没有多少帖子解释如何做到这一点的原因是因为(你可能已经收集过)这不是一个好主意 。 我保证您的用例也不例外。 如果您没有注意到, globals()本质上是全局变量的字典。 这意味着你应该一直使用字典;) >>> a = "column_number"

>>> b = "_url1"

>...

根据功能的位置,您可以使用以下其中一种: globals()[string1 + string2]()

locals()[string1 + string2]()

Depending on where the function is, you can use one of these: globals()[string1 + string2]()

locals()[string1 + string2]()

基本上, if test_string in list_of_strings的test_string,你想要idom。 看起来您不需要区分大小写,所以您可能需要 if test_string.lower() in (s.lower() for s in list_of_strings)

在你的情况下: >>> originals = ['0430f244a18146a0815aa1dd4012db46', '0430f244a18146a0815aa1dd40 12db46', '59739CC...

实际上在标准库中碰巧有这个功能: difflib.SequencMatcher.find_longest_match There actually happens to be a function for this in the standard library: difflib.SequencMatcher.find_longest_match

使用itertools.combinations_with_replacement获取插入x s的索引: import itertools

str1 = "ABC"

lst = list(str1)

for n in range(len(str1)):

for idxs in itertools.combinations_with_replacement(range(len(str1)), n):

xs = lst[:]

for i in reversed...

查看文档以获取详细信息,但是对于您的示例,您可以编写 print("{l}{x}{r}".format(l=left, r=right, x=2*''))

Look in the docs for details, but for your example you could write print("{l}{x}{r}".format(l=left, r=right, x=2*''))

我认为转换为内置整数类型的二进制和操作可能会比逐字符工作更快(因为Python的int是用C而不是Python编写的)。 我建议你在输入文件的每一行上工作,而不是一次完成数百万字符的字符串。 二进制和操作不需要任何携带,因此单独使用每一行都没有问题。 为了避免笨拙的字符串操作将结果填充到正确的长度,您可以使用str.format方法将您的整数str.format转换为正确长度的二进制字符串。 这是一个将输出写入新文件的实现: import itertools

with open(filename...

现在你只测试长度和第一个字符匹配。 for i, c in zip(problem, solution):

if i != c:

# that's the first set of chars, but we're already returning??

return False

if i == c or "#" == c:

# wildcard works here, but already would have failed e...

您需要将数字转换为float ,如果元素无法转换为数字,请在它们之间插入'-' 。 diffs = []

for i, j in zip(a, b):

try:

diffs.append(str(float(j) - float(i)))

except ValueError:

diffs.append('-'.join([j, i]))

>>> print(diffs)

['3.5', '-23.8', 'AMM-FFD']

由于python是强...

相关文章

比如“12344321我爱java”与“1我432爱2134ajav”被认为两个字符串相等!

Python 字符串操作,字符串序列用于表示和存储文本,python中字符串是不可变的,一旦声明,不能

...

字符串的格式化 在python中也有类似于c中的printf()的格式输出标记。在python中格式化

...

python2和python3的区别,1.性能 Py3.0运行 pystone benchmark的速

...

Python 编程语言具有很高的灵活性,它支持多种编程方法,包括过程化的、面向对象的和函数式的。但最重

...

好久没有写了,还不是近期刚过的期末考试和期中考试 最近因为一个微信公众平台大赛在学phthon 找了本

...

python的官网:http://www.python.org/ 有两个版本,就像struts1和st

...

Python的文件类型 Python有三种文件类型,分别是源代码文件、字节码文件和优化代码文件

源代

...

在python中, 去除了i > 0周围的括号,去除了每个语句句尾的分号,还去除了表示块的花括号。多出

...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值