首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换每行python中句子中以字符串开头的单词

替换每行python中句子中以字符串开头的单词
EN

Stack Overflow用户
提问于 2022-10-28 11:31:10
回答 2查看 47关注 0票数 1

我试图替换以字符串开头的单词,该字符串存储在多行数据中的文本数据中。df有6列:日期、用户、推特、语言、坐标、地点。替换发生在具有例如第1行的tweet列中:

nous nous ne sommes pas très收藏,au télétravail mais nous avons de super tout中性粒v. Il manque un babyfoot les courtiers auront re联les rangs de la Start https://link

在第二行中: parévélétravail que le #télétravail pouvait avoir un impact sur le #cyclemenstruel,et ce,etàt de la疲劳,du #stress et du manque d‘’activitécause induits par le travailà距离

通过@marieclaire_fr https://link

在第三行:@IrisDessine @fredchristian__ Mais c‘et car j’ami horreur de passer la serpillière le mien aspire et lave et专营c‘et devenu meilleur ami il bosse tranquillou quand je suis en télétravail

等。

我想把以“@”开头的单词替换为“@user”,并将链接(以“http”开头)替换为“http”。df的所有列都被视为对象。我尝试过多种方法:

代码语言:javascript
复制
for individual_word in df["Tweet"]:
#print(individual_word)
if individual_word.startswith('@') and len(individual_word) > 1:
    individual_word = '@user'

有了这段代码,什么都没有发生,没有错误,没有替换。另一个代码:

代码语言:javascript
复制
for individual_word in df["Tweet"].split(' '):
#print(individual_word)
if individual_word.split(' ').startswith('@') and len(individual_word) > 1:
    individual_word = '@user'

对于这段代码,我有一个错误:'Series‘object没有属性'split’。另一个代码:

代码语言:javascript
复制
for individual_word in df["Tweet"].str.split(' '):
#print(individual_word)
if individual_word.str.split(' ').startswith('@') and len(individual_word) > 1:
    individual_word = '@user'
    #print(individual_word)

对于这段代码,我有一个错误:'list‘object没有属性'str’。在将列Tweet转换为字符串时,我也尝试过这样做,但是没有任何更改。根据尝试的代码,我认为每一行都被认为是一个列表,所以我必须在列表列表中查找以'@‘和'http’开头的单词,并替换它们。或者,每一行都被认为是一个单词,而不是一个句子。因此,如果第一个单词以'@‘开头,它将被更改,但如果在句子后面以'@’开头,则不会更改。

我也试过列出清单。我可以将我的数据放在一个名为my_list和3列的列表中--类型、大小、值。列值中的my_list第1行:

“存在”、“有利”、“télétravail”、“超级”、“本地”、“中性”、“manque”、“婴儿脚”、“朝臣”、“喜悦”、“响”、“开始”、“国家”、“https://link‘”

列值中的my_list第2行:

“练习曲”、“尖峰”、“保健”、“révéler”、“télétravail”、“影响”、“自行车”、“因”、“疲劳”、“压力”、“manque”、“activité”、“体质”、“induire”、“travail”、“距离”、@marieclaire_fr、“https://link‘”

列值中的my_list第3行:

‘'vive','télétravail','commeunlundi','https://link’‘

我试过这个密码:

代码语言:javascript
复制
for each_list in my_list:
#print(each_list)
for each_word in each_list:
    #print(each_word)
    if each_word.startswith('@') and len(each_word) > 1:
        #print(each_word)
        each_word = '@user'

我没有任何错误,但是单词在my_list的每个列表中都没有变化。

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-28 12:35:16

你可以试试熊猫字符串方法。还可以查看regex 101,以检查哪种正则表达式最适合您的情况。

代码语言:javascript
复制
df['tweets'] = df['tweets'].str.replace('@\S+', '@user')
>>>df['tweets']
    tweets
0   « Une étude de la Spire Healthcare a révélé, q...
1   @user @user Mais c'est super pratique car j'ai...
票数 1
EN

Stack Overflow用户

发布于 2022-10-28 11:46:01

尝试在新文件中保存值,如果word以@ save @user delete开头,则保存该单词,然后删除原始文件。现在发生的情况是,变量individual_word正在获取值@user,但它是一个变量,因此不会进行永久更改

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74234739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档