问题描述
我正在尝试提取字符串 pax:
后面的数字的所有实例。指示 pax 的字符串前面是一个以 RCT
开头的字符串。
在下面的数据中,我将尝试提取 2
。
数据原如下:
" T44-39 "
"RCT# 26798 pax: 2"
"STORE# 6 TERMINAL# 3 ONLINE"
第一次尝试的代码如下:
with open("e-journal.txt","r") as rf:
with open("e-journal_py output.txt","w") as wf:
for line in rf:
line = line.strip()
if line.startswith('"RCT#'):
pax = line.split()
pax2 = pax[3]
print (pax2)
然而,每一行都以 "
开始和结束,所以我试图通过修改代码来替换 "
。
T44-39 \nRCT# 26798 pax: 2\nSTORE# 6 TERMINAL# 3 ONLINE\n
第二次尝试代码如下:
with open("e-journal.txt","w") as wf:
data = rf.read()
data = data.replace('"','')
with open(data) as data:
for line in data:
line = line.strip()
if line.startswith("RCT"):
pax = line.split()
pax2 = pax[1]
修改后的代码删除了每行开头和结尾的 "
,但也返回了整个文本文件的内容。换句话说,startswith
函数不返回 pax
的数量。如何修改代码以返回字符串 pax
后面的数字?
另外,鉴于没有代码可打印,我不确定是什么促使成本返回整个数据集
解决方法
你的第一次尝试是最明智的。它已返回 2"
,因此您只需删除尾随的 "
。
您可以使用 rstrip
字符串方法来做到这一点。简单地改变
pax2 = pax[3]
到
pax2 = pax[3].rstrip('"')
或者如果您想将其视为整数而不是字符串,请在其周围添加 int()
:
pax2 = int(pax[3].rstrip('"'))