【问题标题】:How to just keep the substring before the first blank character in one column?如何只保留一列中第一个空白字符之前的子字符串?
【发布时间】:2019-12-16 17:37:48
【问题描述】:

这是我的数据样本:

a=pd.DataFrame({'ID':[1,2,3,4,5],
                'Str':['aa aafae afre ht4','v fef 433','1234334 a','bijf 049tu0q4g vie','aaa 1']})

现在我只想在第一个空白字符之前保留子字符串。我可以找到第一个空白字符的位置。但是我不知道下一部分该怎么做。

我正在尝试打印一个句子的前三个单词的第一个字母,但是在d4 = y.find(" ", d3) 部分,程序没有将其识别为整数,如果我将其转换为整数,它导致错误,因为我在 base 10 中。

我该如何解决这个问题?

【问题讨论】:

  • 导入 re,然后 before_blank_char = re.sub(" .*", "", x)。如果您将破折号视为空白字符,则可以将“[ -].*”作为第一个参数传递。此外,如果您知道第一个空白字符的位置为 y,则可以使用 my_string[:y]。但是正则表达式很方便,只需一行。
  • 谢谢。但是你能不能更具体一些,比如给我一个真实的例子。我对这些真的很陌生。
  • 没问题。正则表达式似乎很棘手,但一些基础知识可以走很长的路。 import re/x = "这是一个只有空格的句子"/y"这个-这里的句子有破折号"/x1=re.sub(" .*", "", x)y1=re.sub(" .* ", "", y)/x2=re.sub("[- ].*", "", x)y2=re.sub("[- ].*", "", y)/print(x1 , y1, x2, y2) (抱歉格式错误,匆忙,但用回车替换 /)。您应该会看到差异。

标签: python string pandas find substring


【解决方案1】:

让我们使用示例字符串this is just a test

如果空格只是空格

你可以这样做:

test = "this is just a test"
first_word = test.split(" ")[0]
print(first_word)

这将导致this

我在这里做的是

  • 将字符串按空格分割成单词数组:test.split(" ")
  • 仅选择位置 0 的第一个元素:[0]

如果空格可以是任何空格(空格、制表符等)

你可以像这样使用正则表达式:

import re

test = "this is just a test"
first_word = re.sub('\s.*', '', test)
print(first_word)

在这里,我搜索第一个出现的空格 ('\s'),后跟任何文本 (.*),然后将其替换为空 ('')。

如果你想使用 find

test = "this is just a test"
space_pos = test.find(" ")
first_word = test[:space_pos]
print(first_word)

【讨论】:

  • 谢谢,但是当它是一个专栏时,这似乎效果不佳。
  • @FengChen 究竟是什么不工作?你怎么把它放在一个列中?
  • @FengChen 我的错,我以为你想在第一个空白之前删除部分字符串。
  • 不用担心,非常感谢您的帮助。我这样用: a.loc[:,'Loc']=a.loc[:,'Str'].astype(str).str.find(' ') ##---## a.loc[ :,'Str'].astype(str).str[0:a.loc[:,'Loc']]。但它不起作用
  • @FengChen 我已经更新了答案。只需使用your_string.split(" ")[0]
猜你喜欢
  • 1970-01-01
  • 2016-09-26
  • 2017-03-13
  • 2016-02-18
  • 2011-12-04
  • 2023-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多