如何解决如何在Python中部分拆分并获取字符串的第一部分? 输出:
有一种情况,我想部分分割字符串并拾取字符串的第一部分。
-
说字符串可能像aloha_maui_d0_b0或new_york_d9_b10。注意:d后面的数字可以是任意大小。
-
我想在_d *之前部分剥离任何字符串,即只需要_d0_b0或_d9_b10。
-
尝试以下代码,但显然它也删除了拆分项。
print(("aloha_maui_d0_b0").split("_d")) #Output is : ['aloha_maui','0_b0'] #But Wanted : _d0_b0
-
还有其他方法可以获取部分内容吗?我需要在regexp中试用吗?让我尝试并行。
任何建议都将受到高度赞赏。感谢在adv中!
解决方法
怎么样
from google.cloud import storage
client = storage.Client()
bucket = client.get_bucket('quickdraw_dataset')
blob = bucket.get_blob('full/simplified/bird.ndjson')
c_json = pd.read_json(blob,lines = True,chunksize = 1)
...
如果字符串中始终带有'_d',则应该可以解决问题
,您可以使用npm
分成两部分:
index()
编辑:如果您的字符串中有多个s = 'aloha_maui_d0_b0'
idx = s.index('_d')
l = [s[:idx],s[idx:]]
# l = ['aloha_maui','_d0_b0']
,也可以使用它:
_d
,
我有两个建议。
partition()
使用方法partition()
获取包含定界符作为元素之一的元组,并使用+
运算符获取所需的String:
teste1 = 'aloha_maui_d0_b0'
partitiontest = teste1.partition('_d')
print(partitiontest)
print(partitiontest[1] + partitiontest[2])
输出:
('aloha_maui','_d','0_b0')
_d0_b0
partition()
方法返回一个元组,第一个元素是定界符之前的元素,第二个元素是定界符本身,第三个元素是定界符之后的元素。
该方法对在字符串上找到的分隔符的第一种情况执行此操作,因此,如果不对代码进行额外的工作,则不能使用它来分割3个以上的分隔符。为此,我的第二个建议会更好。
replace()
使用方法replace()
在定界符(_d
)之前插入一个或多个多余字符,并将其用作split()
方法的定界符。
teste2 = 'new_york_d9_b10'
replacetest = teste2.replace('_d','|_d')
print(replacetest)
splitlist = replacetest.split('|')
print(splitlist)
输出:
new_york|_d9_b10
['new_york','_d9_b10']
由于它将_d
的字符串上的所有|_d
替换为teste3 = 'rio_de_janeiro_d3_b32'
replacetest = teste3.replace('_d','|_d')
print(replacetest)
splitlist = replacetest.split('|')
print(splitlist)
,因此使用它拆分成2个以上没有问题。
问题?
由于_d出现在比预期更多的位置,因此您可能需要小心的情况是不必要的拆分。
按照示例中带有城市名称和数字的明显逻辑,您可能会遇到类似这样的情况:
rio|_de_janeiro|_d3_b32
['rio','_de_janeiro','_d3_b32']
输出:
_d
假设您始终在字符串末尾有数字,并且rpartition()
不会出现在数字内,则rpartitiontest = teste3.rpartition('_d')
print(rpartitiontest)
print(rpartitiontest[1] + rpartitiontest[2])
可能是一种解决方案:
('rio_de_janeiro','3_b32')
_d3_b32
输出:
rpartition()
由于setuptools.Extension
在字符串的末尾开始搜索,并且只需要进行第一个匹配就可以将术语分成一个元组,因此您不必担心第一个术语(城市的名称?)会引起意外的分裂。
使用正则表达式的split并保留定界符功能:
import re
patre = re.compile(r"(_d\d)")
#? ?
#note the surrounding parenthesises - they're what drives "keep"
for line in """aloha_maui_d0_b0 new_york_d9_b10""".split():
parts = patre.split(line)
print("\n",line)
print(parts)
p1,p2 = parts[0],"".join(parts[1:])
print(p1,p2)
输出:
aloha_maui_d0_b0
['aloha_maui','_d0','_b0']
aloha_maui _d0_b0
new_york_d9_b10
['new_york','_d9','_b10']
new_york _d9_b10
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。