草庐IT

str-replace

全部标签

Python 正则表达式 : how to replace each instance of an occurrence with a different value?

假设我有这个字符串:s="blahblahblah"使用Python正则表达式,如何用不同的值替换“blah”的每个实例(例如,我有一个值列表v=("1","2","3") 最佳答案 你可以使用re.subcallback:importredefcallback(match):returnnext(callback.v)callback.v=iter(('1','2','3'))s="blahblahblah"print(re.sub(r'blah',callback,s))产量123

Python TypeError 必须是 str 而不是 int

这个问题在这里已经有了答案:MakingastringoutofastringandanintegerinPython[duplicate](5个答案)HowcanIconcatenatestrandintobjects?(1个回答)关闭5年前。我在处理以下代码时遇到问题:ifverb=="stoke":ifitems["furnace"]>=1:print("goingtostokethefurnace")ifitems["coal"]>=1:print("successful!")temperature+=250print("thefurnaceisnow"+(temperatur

python - str.startswith 是如何工作的?

我一直在玩startswith(),我发现了一些有趣的东西:>>>tup=('1','2','3')>>>lis=['1','2','3','4']>>>'1'.startswith(tup)True>>>'1'.startswith(lis)Traceback(mostrecentcalllast):File"",line1,inTypeError:startswithfirstargmustbestroratupleofstr,notlist现在,错误很明显,将列表转换为元组将像最初那样工作得很好:>>>'1'.startswith(tuple(lis))True现在,我的问题是:

python - PyCharm - 预期类型 'Optional[IO[str]]' ,取而代之的是 'TextIOWrapper[str]'

PyCharm升级到2017.1后,看似简单正确的地方开始弹出新的检查警告。它看起来如下:看起来open()没有返回file参数的预期类型,但代码非常简单,最重要的是,它确实按预期工作(使用Python3.5.2)。Pythondocs提到一种使用StringIO的方法,它确实消除了警告,但是这是为print指定输出流的正确pythonic方法吗?如果是这样,为什么?遵循这个警告很重要吗? 最佳答案 我找到的唯一解决方案是正确键入hintPyCharm:fromtypingimportIOwithopen('output_filen

python - Scrapy: 'str' 对象没有属性 'iter'

我向我的scrapy蜘蛛添加了restrict_xpaths规则,现在它立即失败并显示:2015-03-1615:46:53+0000[tsr]ERROR:SpidererrorprocessingTraceback(mostrecentcalllast):File"/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/base.py",line800,inrunUntilCurrentcall.func(*call.args,**call.kw)File"

python - 使用 DataFrame.replace 时是否可以强制 pandas 不转换数据类型

这是一个工作示例:df=pd.DataFrame({'A':[-39882300000000000000]},dtype='object')df.replace({',':'.'})引发了一个OverflowError因为在代码的某处convert标志是设置为真。我不确定,但这可能是因为pandas推断它只包含数字。我从Excel工作簿中读取数据,我想在使用df.replace时阻止这种转换。有办法吗? 最佳答案 df.update(df.blocks['object'].astype(str).replace({',':'.'})

python - 为什么 str(KeyError) 添加额外的引号?

为什么KeyError的字符串表示会在错误消息中添加额外的引号?所有其他内置异常只是直接返回错误消息字符串。例如下面的代码:printstr(LookupError("foo"))printstr(KeyError("foo"))产生以下输出:foo'foo'我已经用其他内置异常(IndexError、RuntimeError、Exception等)的样本进行了尝试,它们都返回了不带引号的异常消息。help(KeyError)说__str__(...)是在KeyError中定义的,而不是LookupError,它使用BaseException基类中定义的那个。这解释了行为有何不同,但没

python - 将 Python 3 Unicode 字节字符串 - `str(utf8_encoded_str)` 转换回 unicode

那我先介绍一下问题我通过POST/GET请求获得了一些数据。数据是UTF-8编码的字符串。我不知道,只是通过str()方法将其转换。现在我拥有完整的“废话数据”数据库,找不到返回的方法。示例代码:unicode_str-这是我应该获取的字符串encoded_str-这是我通过POST/GET请求获得的字符串-初始数据bad_str-我目前在数据库中的数据,我需要从中获取unicode。显然我知道如何转换:unicode_str=(encode)=>encoded_str=(str)=>bad_str但我无法想出解决方案:bad_str=(???)=>encoded_str=(decod

python - TypeError : list indices must be integers, 不是 str Python

list[s]是一个字符串。为什么这不起作用?出现如下错误:TypeError:listindicesmustbeintegers,notstrlist=['abc','def']map_list=[]forsinlist:t=(list[s],1)map_list.append(t) 最佳答案 当你遍历一个列表时,循环变量接收实际的列表元素,而不是它们的索引。因此,在您的示例中s是一个字符串(第一个abc,然后是def)。看起来您要做的基本上是这样的:orig_list=['abc','def']map_list=[(el,1)f

python - replace() 方法不适用于 Pandas DataFrame

我查过这个问题,大多数问题都是针对更复杂的替换。但是,就我而言,我有一个非常简单的数据框作为测试假人。目的是用nan替换数据框中任意位置的字符串,但这似乎不起作用(即不替换;没有任何错误)。我试过用另一个字符串替换,但它也不起作用。例如d={'color':pd.Series(['white','blue','orange']),'second_color':pd.Series(['white','black','blue']),'value':pd.Series([1.,2.,3.])}df=pd.DataFrame(d)df.replace('white',np.nan)输出仍然是